web-dev-qa-db-de.com

Holen Sie sich Beiträge mit WP_Query

Ich möchte Posts mit WP_Query-Funktionen anzeigen. Ich möchte auch eine zufällige Reihenfolge hinzufügen.

Also versuche ich es

<?php
  $temp = $wp_query; 
  $wp_query= null;
  $args = array(
        'orderby' => 'Rand',
  ); 
  $wp_query = new WP_Query($args);
  $wp_query->query('showposts=8' . '&paged='.$paged );
  while ($wp_query->have_posts()) : $wp_query->the_post();
?>

Ich kann 8 Beiträge sehen, aber es scheint, dass 'orderby' => 'Rand' nicht funktioniert.

2
name name2

Es ist schon eine Weile her, dass ich mit WordPress gearbeitet habe, aber es scheint mir, dass:

Sie führen die Abfrage zweimal aus.

  • Zuerst, wenn Sie während der Instanziierung $args an den Konstruktor übergeben.

  • Zweitens, wenn Sie query() aufrufen.

Damit überschreiben Sie im Wesentlichen die erste Abfrage (die die orderby = Rand enthält).

In der Dokumentation von WP_Query wird erwähnt, dass get_posts() aufgerufen wird, wenn Sie einen Parameter im Konstruktor verwenden. Dieser sollte nicht zweimal aufgerufen werden:

& get_posts () - Holt die angeforderten Posts aus der Datenbank und gibt sie zurück. Füllen Sie auch $ posts und $ post_count aus. Anmerkung: Wird während der Erstellung aufgerufen, wenn WP_Query mit Argumenten erstellt wird. Es ist nicht idempotent und sollte nicht mehrmals für dasselbe Abfrageobjekt aufgerufen werden. Andernfalls kann es zu einer fehlerhaften Abfrage kommen.

In der Dokumentation der query() -Methode heißt es, dass sie get_posts() aufruft und daher zweimal aufgerufen wird:

& query ($ query) - Call parse_query () und get_posts () . Gibt die Ergebnisse von get_posts () zurück.

Die Lösung:

  • Sie sollten entweder alles in $args eingeben oder
  • fügen Sie den Parameter orderby ebenfalls zum Aufruf $wp_query->query(..) hinzu.
3
MrValueType

Schauen Sie sich die WP_Query-Klassenreferenz an und arbeiten Sie sich von dort aus hoch. Probieren Sie die grundlegenden Beispiele aus und spielen Sie mit den Parametern, bis Sie ein Gefühl dafür bekommen, wie WP_Query und die Schleife funktionieren.

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

Der Grund, warum Ihre Abfrage nicht funktioniert, ist, dass Sie die Parameter nicht korrekt übergeben (verwenden Sie das Array args für alle) und veraltete Parameter verwenden.

1
Svartbaard