it-swarm.com.de

Post-IDs von WP_Query abrufen?

Gibt es eine Möglichkeit, eine Reihe von Post-IDs abzurufen, die aus den folgenden Quellen abgefragt wurden:

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

Nachverfolgen:

Ich habe wp_list_pluck verwendet, um eine Reihe von Post-IDs abzurufen:

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

Dann konvertierte das Array mit der Implode-Funktion in einen String:

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

Entschuldigen Sie die zweideutige Frage.

24
Rich

Versuchen

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

Lesen wp_list_pluck

40
shanebp

Verwenden Sie das Argument fields in Ihrer Abfrage.

fields (string) - Welche Felder zurückgegeben werden sollen. Alle Felder werden von zurückgegeben
Standard. Es gibt zwei weitere Optionen: - 'ids' - Gibt ein Array von Beitrags-IDs zurück. - 'id => parent' - Liefert ein assoziatives Array [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);
66
s_ha_dum

Die Verwendung der Lösung von @ s-ha-dum ist wirtschaftlich, wenn Sie nur die IDs abrufen müssen und keine vorherigen Abfrageobjekte festgelegt haben.

Hier ist warum:

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

Denn in dem Fall, dass Sie nur 'fields' => 'ids' angeben, erhalten Sie nichts mehr als die IDs.

Wenn Sie mit 'fields' => 'id=>parent' gehen würden (sieht wirklich lustig aus), erhalten Sie auch die Eltern-IDs.

Eine andere Verwendung des Arguments 'fields' hat ab WordPress v4.7 keine Auswirkungen.

Wenn Sie jedoch die Abfrage wie im Beispiel haben, erledigt wp_list_pluck die Aufgabe.

2
prosti