Je crée un tableau de bord frontal où je dois afficher tous les messages de l'utilisateur actuel. Donc, je dois montrer des messages dans tous les états, principalement published
, trashed
et dans les pending
. J'utilise maintenant une requête simple mais elle ne renvoie que les publications publiées.
$query = array(
'post_type' => 'my-post-type',
'post_author' => $current_user->ID
);
query_posts($query);
Quelqu'un peut-il aider? Que dois-je faire d'autre?
post_status
paramètre , c'est à dire.'post_status' => 'any'
?WP_Query
pre_get_posts
ouget_posts
au lieu dequery_posts
. Ne jamais utiliserquery_posts
WP_Query
-leget_posts
pour les requêtes front-end et pour les requêtes administratives en cas de problèmewp_reset_postdata
(reportez-vous à la note et au ticket relatifs à ce problème).Réponses:
Vous pouvez utiliser le paramètre post_status:
Je ne suis pas sûr qu'il accepte 'any', utilisez donc array avec tous les types souhaités:
la source
get_post_stati()
pour obtenir tous les statuts, y compris ceux personnalisés.query_posts
appel ...'post_status' => array( '!inherit' );
(pour indiquer n'importe quel post-statut autre qu'hériter)'post_status' => array_diff(get_post_stati(), ['inherit']);
Il existe un moyen simple, comment obtenir tous les messages avec n'importe quel statut:
Maintenant, vous pouvez parcourir tous les messages:
la source
La
WP_Query
méthode class->query()
accepte unany
argument pourpost_status
. Voirwp_get_associated_nav_menu_items()
pour une preuve.La même chose vaut pour
get_posts()
(qui est juste un wrapper pour l'appel ci-dessus).la source
auto-draft
ettrash
sont exclus.query_var
... pour quelque raison que ce soit. Sidenote: Le pluriel de l' état post est ... .WP_Query#get_posts()
appelsget_post_stati()
filtrant les$wp_post_statuses
valeurs oùexclude_from_search
true est vrai, alors les publications avec ces statuts sont exclues de la requête. Il existe un processus similaire pour les types de publication lorsque post_type est défini sur 'any'.$wp_post_statuses
propriété, je dois admettre que vous avez raison :)Dans la plupart des cas, vous pouvez utiliser
get_posts()
avec'any'
paramètre pour cela:Mais de cette façon, vous ne recevrez pas de messages avec le statut
trash
etauto-draft
. Vous devez les fournir explicitement, comme ceci:Ou vous pouvez utiliser la fonction get_post_stati () pour fournir explicitement tous les statuts existants:
la source
Même si vous passez en
any
tant quepost_status
, vous n'obtiendrez toujours pas la publication du résultat si toutes les conditions suivantes sont remplies:name
, c.-à-d. Le slug.Solution
Interrogez explicitement pour chaque statut. Par exemple, pour rechercher des statistiques qui ne sont pas
trash
ouauto-draft
(il est peu probable que vous souhaitiez celles-ci), vous pouvez faire quelque chose comme ceci:la source