Aktueller Standort: Startseite> Neueste Artikel> So fusionieren Sie WP_Query mit Hauptabfrage zur Verbesserung der WordPress -Abfrage -Effizienz

So fusionieren Sie WP_Query mit Hauptabfrage zur Verbesserung der WordPress -Abfrage -Effizienz

gitbox 2025-06-13

Was ist WP_Query?

WP_Query ist eine leistungsstarke Abfrageklasse in WordPress, mit der wir Abfrageartikel basierend auf Klassifizierung, Etikett, Autor, Zeit und anderen Bedingungen anpassen können. Es ermöglicht uns, Artikel auf unterschiedliche Weise zu sortieren, z. B. nach Veröffentlichungszeit, zufälliger Reihenfolge oder nach Anzahl der Kommentare, was sehr mächtig ist. Einfach ausgedrückt ist WP_Query eine Abfrageinstanz unabhängig von der Hauptabfrage.

In WordPress wird die Hauptabfrage automatisch durch Front-End-Anforderungen generiert, wodurch die Abfrage basierend auf den Parametern in der URL und den Standardwerten in WordPress-Einstellungen erstellt wird. Wenn wir raffiniertere Abfragen benötigen, müssen wir WP_Query verwenden, um benutzerdefinierte Abfragen durchzuführen.

Warum müssen Sie die Hauptanfrage und die benutzerdefinierte Abfrage zusammenführen?

Obwohl WP_Query leistungsstarke Funktionen liefert, müssen wir in den meisten Fällen nur kleine Anpassungen an der Hauptabfrage vornehmen. Beispielsweise werden mit Ausschluss bestimmter Kategorien von Artikeln in der Hauptschleife oder nur Artikel aus bestimmten Autoren angezeigt. Bei direkter Verwendung von WP_Query ignoriert es die Parameter der Hauptabfrage, die zu Abfrageergebnissen führen können, die den erwarteten nicht entsprechen.

Daher müssen wir WP_Query mit der Hauptabfrage zusammenführen, damit die benutzerdefinierte Abfrage die Parameter der Hauptabfrage erben und Abfrageergebnissekonflikte vermeiden können.

Wie fusioniere ich die Hauptanfrage und eine benutzerdefinierte Abfrage?

Es gibt zwei Möglichkeiten, die Hauptabfrage und die benutzerdefinierte Abfrage zusammenzuführen: Einer erfolgt mit dem Pre_Get_Posts -Hook in Funktionen.php, und der andere besteht darin, die Abfrageparameter direkt in der Vorlagendatei zu ändern. Jede Methode hat ihre Vor- und Nachteile, und die entsprechende Methode sollte gemäß den spezifischen Bedürfnissen ausgewählt werden.

Methode 1: Verwenden Sie den Hook pre_get_posts

pre_get_posts ist eine wichtige hakenfunktion in WordPress, mit der wir vor Abfrage die Abfrageparameter ändern können. Durch die Verwendung der Funktion pre_get_posts Hook in der Datei functions.php können wir die Parameter der Hauptabfrage leicht ändern, um den gewünschten Effekt zu erzielen.

Hier ist ein Beispiel:

 function my_custom_query($query) {
    // Wenn es sich nicht um eine Hintergrundinfrage handelt und es eine Hauptabfrage ist,Ändern Sie die Abfrageparameter
    if (!is_admin() && $query->is_main_query()) {
        $query->set('cat', '-1,-2,-3'); // ausschließenIDfür1、2、3Einstufung
        $query->set('author', '1'); // nur AnzeigenIDfür1Artikel des Autors
    }
}
add_action('pre_get_posts', 'my_custom_query');

Im obigen Code ändern wir die Abfrageparameter mit der Funktion $ query-> set (), wodurch die Funktion des Ausschlusses bestimmter Kategorien und der Anzeige nur bestimmter Autor-Artikel erreicht wird.

Methode 2: Ändern Sie direkt die Abfrageparameter

Wenn wir nur einfache Änderungen an der Abfrage in der Vorlagendatei vornehmen müssen, können wir die Abfrageparameter direkt ändern. Dies ist direkter und einfacher. Zum Beispiel:

 // Code in der Homepagesvorlage
$featured_posts = new WP_Query(array(
    'category_name' => 'featured', // nur Anzeigen特定分类的文章
    'posts_per_page' => 5, // nur Anzeigen5Artikel
));

while ($featured_posts->have_posts()) {
    $featured_posts->the_post(); // Artikel Titel zeigen、Inhalt usw.
}
// Stellen Sie die ursprüngliche Abfrage wieder her
wp_reset_postdata();

Im obigen Code befragen wir die ersten 5 Artikel einer bestimmten Kategorie, indem wir die Parameter category_name und post_per_page festlegen. Verwenden Sie gleichzeitig die Funktion WP_RESET_POSTDATA (), um die ursprüngliche Abfrage wiederherzustellen, um zu vermeiden, dass nachfolgende Abfragen beeinflusst werden.

Dinge zu beachten

Unabhängig davon, ob Sie den Pre_Get_Posts -Hook verwenden oder die Abfrageparameter direkt ändern, müssen Sie auf die folgenden Punkte achten:

  • Ändern Sie die Abfrageparameter sorgfältig, um zu vermeiden, dass andere Abfrageergebnisse beeinflusst werden.
  • Verwenden Sie wp_reset_postdata (), um die ursprüngliche Abfrage wiederherzustellen, um zu vermeiden, dass nachfolgende Abfragen betroffen sind.
  • Vermeiden Sie es, die WP_Query -Klasse direkt in Funktionen.php zu verwenden, um die Leistung der Site zu vermeiden.

Abschluss

Das Zusammenführen von WP_Query mit Hauptanfragen ist eine sehr praktische Fähigkeit in der WordPress -Entwicklung. Es hilft uns, Abfragen genauer anzupassen und Konflikte zu vermeiden. Unabhängig davon, ob der Pre_Get_Posts -Hook verwendet oder Abfrageparameter direkt geändert werden, muss es vernünftigerweise verwendet werden, um unnötige Nebenwirkungen zu vermeiden.