wake-up-neo.net

Wie benutze ich order Rand () bei Wordpress?

Achtung: Es ist order , nicht orderby .

Laut WordPress-Dokumenten gibt es nur zwei Optionen für order : ASC oder DESC.

Das Problem ist:

Ich möchte die von mir ausgewählten Posts randomisieren , nicht randomisieren WELCHE Posts ich auswähle .

Hier ist mein Code zur besseren Erklärung:

<?php
return array(
  "post_type" => "listings",
  "post_status" => "publish",
  'meta_query'=>array(
                        array('key'=>'featured_until','value'=>$current_date, 'compare'=>'>'),
                     ),
  'meta_key'=>'featured_until',
  "orderby" => array(
            'featured_until' => 'Rand', /* How can I make this work? */
            'date' => 'DESC'
  ),
  "suppress_filters" => true,
  "facetwp" => true,
  "posts_per_page" => 16
);

Es ist eine Listings-Website. Mit dem obigen Code werden 16 Beiträge ausgewählt, die auf der ersten Seite angezeigt werden sollen.

Zunächst wird versucht, 16 vorgestellte Einträge zu finden. Wenn es nicht so viele empfohlene Einträge gibt, werden die regulären Einträge nach Datum sortiert.

Die Frage ist: Wie kann ich die vorgestellten Listen per RANDOM anstelle von ASC oder DESC bestellen?

1

Sie haben Recht, dass WordPress die abgerufenen Beiträge nicht in zufälliger Reihenfolge anordnen kann. Das müssen Sie also selbst tun, nachdem Sie das Array der Post-Objekte abgerufen haben. Nennen wir das $my_posts.

Da Sie nicht wissen, wie viele Beiträge in diesem Array enthalten sind, müssen Sie diese durchlaufen, um das Array zu teilen. Ich weiß nicht, wie genau Sie "Hervorgehoben" definiert haben, aber es würde ungefähr so ​​aussehen:

$featured_posts = array ();
$nonfeatured_posts = array ();
foreach ($my_posts as $my_post) {
  if (test if featured)
    $featured_posts[] = $my_post
  else
    $nonfeatured_posts[] = $my_post;
// now, let's randomize
shuffle ($featured_posts);
// join the array again
$my_posts = array_merge ($featured_posts,$nonfeatured_posts);
// now you have your array with featured posts randomized

Vorsicht, ich konnte diesen Code nicht testen, aber ich vertraue darauf, dass Sie den Punkt verstehen.

3
cjbj

Das Mischen der Ergebnisse einer Abfrage ist wirklich so einfach wie shuffle() das Mischen der Ergebnisse einer Abfrage.

$query = new WP_Query( //arguments );
shuffle( $query->posts );
1
bosco