wake-up-neo.com

Nur Count von einer wp_query-Anfrage zurückgeben?

Ist es mit den Standard-Tools in Wordpress möglich, dass wp_query nur die Anzahl einer Abfrage zurückgibt?

Im Moment habe ich eine Abfrage, die mehrere meta_queries enthält, aber das einzige, woran ich interessiert bin, ist die tatsächliche Anzahl der Abfragen.

Ich weiß, dass ich die Eigenschaft found_posts verwenden kann, aber die Abfrage selbst generiert einen großen Overhead durch die Abfrage SELECT * und gibt somit das gesamte Objekt zurück.

Ich könnte die Datenbank genauso einfach mit einer benutzerdefinierten Abfrage mit $wpdb abfragen, aber ich möchte, wenn möglich, das eingebaute Abfragesystem verwenden.

Ich habe auf SE und Google nach der Antwort dafür gesucht, bin aber leer ausgegangen.

Wenn ich mich schlecht erklärt habe, lassen Sie es mich bitte wissen und ich werde versuchen, dies näher zu erläutern.

Prost

7
Mestika

Es gibt keine eingebaute Funktion, um das zu erreichen, was Sie wollen, zumindest nicht für komplizierte Meta-Abfragen wie diese. Wenn Sie dafür eingebaute Funktionen verwenden müssen, ist es am besten, WP_Query zu verwenden.

Um die Abfrage zu beschleunigen und das unerwünschte zurückgegebene Array von WP_Post -Eigenschaften zu überspringen und weil Sie nur an der Anzahl der Posts interessiert sind, können Sie in Ihren Parametern in Ihren Argumenten Folgendes verwenden

'fields' => 'ids',
'no_found_rows' => true,

Dies ist möglicherweise sogar etwas schneller als eine benutzerdefinierte SQL-Abfrage, und die Ergebnisse von WP_Query werden ebenfalls zwischengespeichert.

9
Pieter Goosen

Ich weiß, dass dies beantwortet wurde und da Ihre Frage auf der Verwendung von WP_Query beruhte, ist meine Antwort wahrscheinlich langwierig, aber Sie könnten auch versuchen, dies zu verwenden:

wp_count_posts( $type, $perm );

where $type = post_type (post, page, 'custom-post-type-slug') und where $perm = Um private Beiträge einzuschließen, die vom aktuellen Benutzer gelesen werden können, setzen Sie diese Option auf "lesbar".

Ich habe dies in der Vergangenheit mit großem Erfolg genutzt :)

wp_count_posts('post')->publish -> returns only the count for published posts.
0
cristian.raiber