Obter IDs de post de WP_Query?

21

Existe uma maneira de recuperar uma matriz de IDs de postagem consultados do seguinte:

$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();

Acompanhamento:

Eu usei wp_list_pluck para recuperar uma matriz de IDs de postagem:

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

Em seguida, converteu o array em uma string usando a função implode:

$post_ids_string = implode( ',', $post_ids );

Desculpe pela pergunta ambígua.

    
por Rich 21.10.2014 / 17:01
fonte

3 respostas

37

Tente

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

Leia wp_list_pluck

    
por shanebp 21.10.2014 / 17:16
fonte
55

Use o argumento fields em sua consulta.

  

fields (string) - Quais campos retornar. Todos os campos são retornados pelo   padrão. Existem duas outras opções:    - 'ids' - Retorna uma variedade de IDs de postagem.    - 'id = > parent' - Retorna um array associativo [parent = > ID,…].

     

enlace

$latest = new WP_Query( array (
    'orderby'               => 'rand',
    'posts_per_page'        => 3,
    'fields' => 'ids'
));
var_dump($latest->posts);
    
por s_ha_dum 21.10.2014 / 17:23
fonte
1

Usar a solução de @ s-ha-dum é econômico se você só precisa obter os id's e não tem o conjunto de objetos de consulta anterior.

Aqui está o porquê:

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.*";

Porque no caso de você só especificar 'fields' => 'ids' nada mais você receberá em retorno do que o ID.

Se você fosse com 'fields' => 'id=>parent' (parece muito engraçado), você também obterá o ID do pai.

Qualquer outra maneira que use o argumento 'fields' não terá nenhum impacto no WordPress v4.7.

Mas, caso você tenha a consulta, como no exemplo wp_list_pluck fará o trabalho.

    
por prosti 28.12.2016 / 01:01
fonte