Obtenir les identifiants de publication de WP_Query?

21

Existe-t-il un moyen de récupérer un tableau d'identifiants 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();

Suivi:

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ë.

    
posée Rich 21.10.2014 - 17:01

3 réponses

37

Essayez

$post_ids = wp_list_pluck( $latest->posts, 'ID' );

Lisez wp_list_pluck

    
réponse donnée shanebp 21.10.2014 - 17:16
55

Utilisez l'argument fields dans votre requête.

  

fields (string) - Quels champs renvoyer. Tous les champs sont retournés par
  défaut. Il y a deux autres options:    - 'ids' - Retourne un tableau d'identifiants post.    - 'id = > parent' - Retourne un tableau associatif [parent = > ID,…].

     

enlace

$latest = new WP_Query( array (
    'orderby'               => 'rand',
    'posts_per_page'        => 3,
    'fields' => 'ids'
));
var_dump($latest->posts);
    
réponse donnée s_ha_dum 21.10.2014 - 17:23
1

Utiliser la solution de @ s-ha-dum est économique si vous n’avez besoin que d’obtenir l’identifiant 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' , vous n'obtiendrez rien de plus en retour que l'identifiant.

Si vous voulez aller avec 'fields' => 'id=>parent' (c'est vraiment drôle), vous obtiendrez également l'ID du parent.

Toute autre utilisation de l'argument 'fields' n'aura aucun impact à partir de WordPress v4.7.

Mais si vous avez la requête, comme dans l'exemple wp_list_pluck fera le travail.

    
réponse donnée prosti 28.12.2016 - 01:01

Lire d'autres questions sur les étiquettes