Je souhaite afficher un seul message par son ID à l'aide de WP_Query () . Pour ce faire, j'utilise l'argument suivant:
$args = array(
'p' => 61202);
Cela devrait fonctionner, mais ne semble pas fonctionner si la publication est dans un post_status
personnalisé.
Pour résoudre ce problème, j'ai essayé ce qui suit:
$args = array(
'p' => 61202, // id of post
'post_type' => 'any', // apply to all post types
'post_status' => 'my_custom_status' // the custom post status
);
Mais cela ne fonctionne toujours pas. Pourquoi?!
Y a-t-il un bug connu? J'utilise ce code dans la zone wp-admin. Cela fonctionne correctement si la publication se trouve dans l’un des statuts de publication WP.
WP_Query
a un bogue (# 29167) lorsque vous essayez de récupérer des publications avec (presque?) un autre statut que publish
. Ce bug semble être corrigé dans le coffre. Je ne l’ai pas testé, je ne peux donc pas dire s’il couvre votre cas d’utilisation. Essayez-le et donnez-y votre avis si ce n’est pas le cas.
Il existe deux solutions de contournement:
Utilisez get_post( $post_id )
. Ceci exécute sa propre requête et n’est pas affecté par ce bogue.
Utilisez une requête de base de données personnalisée si vous ne connaissez pas les ID de publication:
$sql = "SELECT * FROM $wpdb->posts WHERE post_status = %s AND post_type = %s";
$prepared = $wpdb->prepare( $sql, $status, $post_type );
$posts = $wpdb->get_results( $sql );