Erhalten Sie Beiträge mit WP_Query

Ich möchte Posts mit WP_Query-functionen anzeigen. Auch ich möchte zufällige Reihenfolge hinzufügen.

Also ich versuche es

 '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 ‘orderby’ => ‘rand’ funktioniert nicht.

Solutions Collecting From Web of "Erhalten Sie Beiträge mit WP_Query"

Es ist schon einige Zeit her, seit ich mit WordPress gearbeitet habe, aber mir scheint, dass:

Sie führen die Abfrage zweimal aus.

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

  • Zweitens, wenn Sie query() aufrufen.

Damit überschreiben Sie im Wesentlichen die erste Abfrage (diejenige, die den Befehl orderby = rand enthält).

Die Dokumentation von WP_Query erwähnt, dass get_posts() aufgerufen wird, wenn Sie einen Parameter im Konstruktor verwenden, und es sollte nicht zweimal aufgerufen werden:

& get_posts ()Holen Sie die angeforderten Posts aus der database und geben Sie sie zurück. Befüllen Sie auch $ posts und $ post_count. Hinweis: Dies wird während der Konstruktion aufgerufen, wenn WP_Query mit Argumenten erstellt wird. Es ist nicht idempotent und sollte nicht mehrmals auf demselben Abfrageobjekt aufgerufen werden. Dies kann zu einer errorshaften Abfrage führen.

Und die Dokumentation der query() -Methode gibt an, dass sie get_posts() , daher wird sie zweimal aufgerufen:

& query ($ query)Rufen Sie parse_query () und get_posts () auf . Gib die Ergebnisse von get_posts () zurück.

Die Lösung:

  • Sie sollten entweder alles in $args , oder
  • orderby Parameter orderby auch dem $wp_query->query(..) .

Sehen Sie sich die WP_Query-classnreferenz an und arbeiten Sie sich von dort aus aus. Probieren Sie die grundlegenden Beispiele aus, spielen Sie mit den Parametern herum, 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 args-Array für alle) und veraltete Params verwenden.