Nur Count von einer wp_query-Anfrage zurückgeben?


7

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

Im Moment habe ich eine Abfrage mit mehreren meta_queries, aber das einzige, was mich interessiert, 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 Abfrage SELECT *und gibt somit das gesamte Objekt zurück.

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

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

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

Prost


Vielleicht so etwas wie diese Antwort, bei der ich die WP_QueryKlasse erweitere, um nur die Zählung zurückzugeben?
Birgire

@birgire Ich habe deinen Beitrag dort total vergessen. Ich habe es sogar irgendwann positiv bewertet. :-). Auf jeden Fall ein Weg hierher
Pieter Goosen

danke, ich hatte das bis jetzt selbst vergessen ;-) @PieterGoosen
birgire

Antworten:


9

Es gibt keine eingebaute Funktion, um das zu erreichen, was Sie wollen, zumindest nicht für komplizierte Metaabfragen wie diese. Wenn Sie hierfür eingebaute Funktionen verwenden müssen, sollten Sie diese am besten nutzen WP_Query.

Um die Abfrage zu beschleunigen und das unerwünschte zurückgegebene Array von WP_PostEigenschaften zu überspringen. Da Sie nur an der Anzahl der Beiträge interessiert sind, können Sie in Ihren Argumenten Folgendes in Ihren Parametern verwenden

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

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


Danke .. und ja
natürlich

Ich freue mich, dass ich helfen konnte :-) Viel Spaß
Pieter Goosen

0

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

wp_count_posts( $type, $perm );

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

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

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

Dies funktioniert ja, aber es werden alle Beiträge innerhalb eines bestimmten Beitragstyps innerhalb eines bestimmten Status gezählt. Das Problem ist, dass dies für benutzerdefinierte Felder nicht funktioniert :-)
Pieter Goosen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.