Question

Nous travaillons sur un plug-in où tout utilisateur connecté a la possibilité de soumettre une nouvelle « pas », ou le type de poste standard avec statut personnalisé de « pas ». Une fois que le terrain est dans le système, d'autres utilisateurs connectés peuvent voter sur l'idée, se portent volontaires pour participer ou commentaire sur l'histoire en cours.

Il était simple à la liste tous les messages non publiés sur une seule vue en interrogeant la base de données pour les postes avec post_status != 'publish'. Je voudrais mettre en place afin que les deux Identifié et non exploitées dans les visiteurs peuvent cliquer sur le titre et voir le poteau sur une seule vue aussi bien. Le comportement par défaut WordPress est de renvoyer une 404 à moins que vous disposez des autorisations suffisantes. Je crois que autorisations de visualisation sont traitées dans la requête objet , et je ne vois pas un moyen simple pour les effacer.

Toutes les idées créatives? Merci à l'avance.

Était-ce utile?

La solution

a répondu à ma propre question sur celui-ci. Comme il se trouve, il est assez simple dans WordPress 2.9.2. Fondamentalement, je appliqué un filtre à « the_posts » qui irait à une autre requête si l'objet était vide. Parce que nous sommes à la recherche des postes qui ne sont pas publiés, nous avons besoin d'utiliser notre propre SQL personnalisé ainsi. Essayer d'utiliser l'objet WP_Query va bien, vous mettre dans une boucle récursive sans fin.

Autres conseils

Si vous utilisez WP 3.0+, vous devriez être en mesure d'utiliser la méthode register_post_status () pour enregistrer le nouveau statut public. Je ne vois pas encore dans le codex, mais au-dessous est ce qui est documenté:

/**
 * Register a post type. Do not use before init.
 *
 * A simple function for creating or modifying a post status based on the
 * parameters given. The function will accept an array (second optional
 * parameter), along with a string for the post status name.
 *
 *
 * Optional $args contents:
 *
 * label - A descriptive name for the post status marked for translation. Defaults to $post_status.
 * public - Whether posts of this status should be shown in the admin UI. Defaults to true.
 * exclude_from_search - Whether to exclude posts with this post status from search results. Defaults to true.
 *
 * @package WordPress
 * @subpackage Post
 * @since 3.0.0
 * @uses $wp_post_statuses Inserts new post status object into the list
 *
 * @param string $post_status Name of the post status.
 * @param array|string $args See above description.
 */
function register_post_status($post_status, $args = array()) {....

Sur cette base, vous devriez juste être en mesure d'appeler:

function add_pitch_status() {
    register_post_status('pitch', array('public'=>true));
}
add_action('init', 'add_pitch_status');
Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top