Je crée un tableau de bord frontal où je dois afficher tous les messages de l'utilisateur actuel. Je dois donc afficher les messages dans tous les États, principalement published
, trashed
et le 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?
Vous pouvez utiliser le paramètre post_status:
* 'publish' - a published post or page
* 'pending' - post is pending review
* 'draft' - a post in draft status
* 'auto-draft' - a newly created post, with no content
* 'future' - a post to publish in the future
* 'private' - not visible to users who are not logged in
* 'inherit' - a revision. see get_children.
* 'trash' - post is in trashbin. added with Version 2.9.
Je ne suis pas sûr qu'il accepte 'any', utilisez donc array avec tous les types souhaités:
$query = array(
'post_type' => 'my-post-type',
'post_author' => $current_user->ID,
'post_status' => array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash')
);
$loop = new WP_Query($query);
while ( $loop->have_posts() ) : $loop->the_post();
La méthode de classe WP_Query
->query()
accepte un argument any
pour post_status
. Voir wp_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).
Il existe un moyen simple, comment obtenir tous les messages avec n'importe quel statut:
$articles = get_posts(
array(
'numberposts' => -1,
'post_status' => 'any',
'post_type' => get_post_types('', 'names'),
)
);
Maintenant, vous pouvez parcourir tous les messages:
foreach ($articles as $article) {
echo $article->ID . PHP_EOL; //...
}
Même si vous transmettez any
en tant que post_status
, vous ne recevrez toujours pas la publication dans le résultat si toutes les conditions suivantes sont remplies:
name
, c’est-à-dire le slug.Interrogez explicitement pour chaque statut. Par exemple, pour rechercher des statistiques qui ne sont pas trash
ou auto-draft
(il est peu probable que vous souhaitiez celles-ci), vous pouvez faire quelque chose comme ceci:
$q = new WP_Query([
/* ... */
'post_status' => get_post_stati(['exclude_from_search' => false]),
]);