Ich habe eine Nummer von Fragen zu SE bezüglich dieser gelesen, aber ich kann immer noch nicht den genauen Unterschied bezüglich der Verwendung herausfinden. Wäre es wahr zu sagen, dass ich wahrscheinlich WP_Query für die Mehrzahl der sekundären Schleifen verwenden und get_posts nur verwenden würde, wenn die Ergebnisse in einem Array zurückgegeben werden müssen, oder anders ausgedrückt, ist der Hauptunterschied zwischen den beiden, dem Array und der Objektrückgabe , oder gibt es einen anderen wichtigen Faktor, den ich beachten sollte?
Sie können get_posts()
als abgespeckten WP_Query
anzeigen. In der Tat auf die Quelle suchen :
//... prepares query array $r
$get_posts = new WP_Query;
return $get_posts->query($r);
get_posts()
use WP_Query
, gibt aber nur eine Reihe von Beiträgen zurück - sonst nichts. Außerdem setzt es:
$r['no_found_rows'] = true;
Normalerweise (standardmäßig mit WP_Query
object) - WordPress fragt ab, wie viele Beiträge es insgesamt gibt - auch wenn Sie erst nach den ersten 10 sind. Dadurch kann Paginierung durchgeführt werden. get_posts()
ist also tatsächlich (etwas) schneller (es ignoriert auch klebrige Beiträge).
Wenn Sie nur ein Array von Posts benötigen und nicht need das Abfrageobjekt -use get_posts()
. Andernfalls sollten Sie WP_Query
verwenden, wenn Sie Zugriff auf die Methoden des Abfrageobjekts oder auf Seitenumbrüche oder Haftnotizen am oberen Rand benötigen.
Eine wichtige Anmerkung ist, dass get_posts()
eine Reihe von Standardargumenten hat, die new WP_Query()
nicht hat, einschließlich post_type
und post_status
. Die Standardeinstellungen der Funktion sind so konfiguriert, dass veröffentlichte Beiträge leichter abgerufen werden können. Wenn Sie etwas anderes wollen, müssen Sie diese Parameter explizit übergeben, während Sie dies mit WP_Query()
nicht tun müssten.
Wenn Sie beispielsweise alle Beiträge unabhängig von ihrem Beitragsstatus abrufen möchten, müssen Sie Folgendes aufrufen: get_posts( array( "post_type" => 'any' ) );
(lassen Sie "post_type" leer - oder alles, was empty()
als true
auswertet, bewirkt, dass get_posts()
den Standardwert "publish" anwendet ").