WP-Abfrage mit mehreren Kategorien – die Übergabe eines Arrays funktioniert?

Gemäß dem Codex müssen wir, um Beiträge zu recherchieren, die zu einer Sammlung von Kategorien gehören können, etwas in der Art tun:

$query = new WP_Query( array( 'cat' => '2,6,17,38' ) ); 

https://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters

Allerdings habe ich folgendes, was funktioniert, und ich bin mir nicht sicher warum.

  $args = array( 'cat' => $related_cat_ids, 'posts_per_page' => -1, ); $query = new WP_Query($args); 

Der Grund, warum ich verwirrt bin, ist, weil $ related_cat_ids eigentlich ein Array ist, aber das Beispiel zeigt deutlich eine Reihe von Zahlen, getrennt durch Kommas, für den “cat” -Wert.

Ist das etwas, worüber ich besorgt sein sollte? Wird mein Code plötzlich aufhören, in einer zukünftigen WordPress-Version zu arbeiten? Es ist bequemer für meinen Fall, das Array weiter zu verwenden, anstatt es in diese Zeichenfolge zu formatieren. Der Grund dafür ist, dass ich get_the_category() , um die Kategorien dynamisch zu bekommen und dann die IDs von diesem Array in mein neues Array zu schieben.

Solutions Collecting From Web of "WP-Abfrage mit mehreren Kategorien – die Übergabe eines Arrays funktioniert?"

Ich verstehe deine Verwirrung, aber du musst dir keine Sorgen machen, denn hinter den Kulissen macht WordPress alle notwendigen Schritte, damit es funktioniert.

Nehmen Sie zum Beispiel den folgenden Code aus der class-wp-query.php

 // If querystring 'cat' is an array, implode it. if ( is_array( $q['cat'] ) ) { $q['cat'] = implode( ',', $q['cat'] ); } 

Sucht nach einem Array und wandelt das Ergebnis schnell in eine durch Kommas getrennte Zeichenfolge um.

Ein anderer Weg ist die Verwendung der anderen Optionen wie:

  category__and An array of category IDs (AND in). category__in An array of category IDs (OR in, no children). category__not_in An array of category IDs (NOT in). 

Mehr dazu in Category_Parameters

Aber wieder würde ich halten, um die Art zu verwenden, die Sie bequemer finden.

Es ist vollkommen in Ordnung, das array() Format zu verwenden, wenn Sie es nützlicher finden, denn dies macht WordPress zu einem unterhaltsamen und nützlichen Werkzeug.

Ja, es wird funktionieren. Die Informationen werden möglicherweise nicht auf dem Codex bereitgestellt. Aber wenn Sie sich den Code hier bezüglich des Parameters ansehen, werden Sie feststellen, dass selbst wenn ein Array übergeben wird, es in String geändert wird.

  // If querystring 'cat' is an array, implode it. if ( is_array( $q['cat'] ) ) { $q['cat'] = implode( ',', $q['cat'] ); } 

Also solltest du in Sicherheit sein. Soweit es mich betrifft, ist es eine gute Sache, dass sowohl String als auch Array als Argumente akzeptiert werden und WordPress Community wird es so lassen wie es ist.

Auch wenn Sie immer noch Zweifel haben, können Sie immer Kategorie__in Parameter verwenden, der immer ein Array wie folgt annimmt:

 $args = array( 'category__in' => $related_cat_ids, 'posts_per_page' => -1, ); $query = new WP_Query($args);