Wenn ich auf einer Site mit vielen Posts arbeite, muss ich 3 Posts aus einer bestimmten Kategorie anzeigen, aber alle müssen aus den letzten 10 auf der Site veröffentlichten Posts stammen. Ich kann entweder 3 völlig zufällige Beiträge greifen (was dazu neigt, sehr alte Beiträge zu ziehen) oder 10 Beiträge greifen (aber ich weiß nicht, wie ich dann die Reihenfolge zufällig festlegen und nur 3 anzeigen soll).
Bisher habe ich diese Frage:
$args = array(
'post_type' => 'post',
'category_name' => 'mycategory',
'posts_per_page' => 10,
'orderby' => 'date',
'order' => 'DESC',
'meta_key' => '_thumbnail_id',
'no_found_rows' => 'true'
);
$query = new WP_Query( $args );
zusammen mit diesem Versuch, 3 zufällige Beiträge von den 10 abgefragten zu erhalten:
$randomPosts = shuffle( $query );
$randomPosts = array_slice( $randomPosts, 0, 3 );
Die Behandlung der Ergebnisse als Array funktioniert jedoch nicht, da es sich tatsächlich um ein Objekt handelt.
Mein einziger anderer Gedanke ist, 'posts_per_page' = 3
mit 'orderby' => 'rand'
3 zufällige Beiträge zu greifen und einen hinzuzufügen 'date_query'
, um ihn auf die letzten 6 Monate zu beschränken. Das wäre nah, aber es wäre vorzuziehen, die Abfrage auf die 10 neuesten Beiträge zu beschränken (sie können alle vor 3 Tagen oder vor 5 Monaten veröffentlicht werden, sie werden zusammen in ungleichmäßigen Schüben veröffentlicht).
Was ist der beste Ansatz?
Fragen Sie die 10 neuesten Beiträge ab, konvertieren Sie das Objekt dann in ein Array, mischen und schneiden Sie es und konvertieren Sie es zurück in ein Objekt. Gibt es eine einfachere und effizientere Möglichkeit, das Ziel zu erreichen?