Existe-t-il un moyen de récupérer un tableau d'ID de publication interrogés parmi les suivants:
$latest = new WP_Query( array (
'orderby' => 'Rand',
'posts_per_page' => 3
));
if ( $latest -> have_posts() ) : while ( $latest -> have_posts() ) : $latest -> the_post();
get_template_part( 'templates/content', 'post' );
endwhile; endif; wp_reset_postdata();
Suivre:
J'ai utilisé wp_list_pluck
pour récupérer un tableau d'identifiants de publication:
$post_ids = wp_list_pluck( $latest->posts, 'ID' );
Puis converti le tableau en chaîne à l'aide de la fonction implode:
$post_ids_string = implode( ',', $post_ids );
Désolé pour la question ambiguë.
Utilisez l'argument fields
dans votre requête.
fields (string) - Quels champs renvoyer. Tous les champs sont retournés par
défaut. Il existe deux autres options: - 'ids' - Renvoie un tableau d'identifiants post. - 'id => parent' - Retourne un tableau associatif [parent => ID,…].http://codex.wordpress.org/Class_Reference/WP_Query#Return_Fields_Parameter
$latest = new WP_Query( array (
'orderby' => 'Rand',
'posts_per_page' => 3,
'fields' => 'ids'
));
var_dump($latest->posts);
L'utilisation de la solution de @ s-ha-dum est économique si vous devez uniquement obtenir l'ID et si aucun objet de requête n'a déjà été défini.
Voici pourquoi:
switch ( $q['fields'] ) {
case 'ids':
$fields = "$wpdb->posts.ID";
break;
case 'id=>parent':
$fields = "$wpdb->posts.ID, $wpdb->posts.post_parent";
break;
default:
$fields = "$wpdb->posts.*";
Parce que dans le cas où vous ne spécifiez que 'fields' => 'ids'
, rien ne vous sera plus retourné que l'ID.
Si vous préférez utiliser 'fields' => 'id=>parent'
(très drôle), vous obtiendrez également l'identifiant du parent.
Toute autre manière utilisant l'argument 'fields'
n'aura aucun impact à partir de WordPress v4.7.
Mais au cas où vous auriez la requête comme dans l'exemple, wp_list_pluck
fera le travail.