Zeigen Sie Beiträge in zufälligen Post-Typen an

Ich arbeite derzeit in einem Projekt in WordPress.

Hier muss ich alle Beiträge von zwei benutzerdefinierten Post-Typen erhalten, nämlich pt1, pt2.

Aber hier möchte ich Posts mit zufälligem Post-Typ (pt1, pt2) anzeigen.

Beispiel)

Ich möchte den ersten Post von pt1, nächsten von pt2 und wieder pt1 und nächsten pt2 und so weiter anzeigen …

Wie kann ich das machen. Irgendeine Hilfe? Dies ist der Code:

$args = array( 'posts_per_page' => 5, 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => array('pt1', 'pt2'), 'post_status' => 'publish' ); $posts = get_posts( $args ); $num=1; foreach($posts as $post) { if( $num % 2 == 0 ) echo $post->post_title.$post->post_type; else echo $post->post_title.$post->post_type; $num++; } 

Solutions Collecting From Web of "Zeigen Sie Beiträge in zufälligen Post-Typen an"

Es gibt keine einfache Abfrage, die das tun wird (siehe unten). Sie müssen Ihre Ergebnisse in PHP verarbeiten, um die von Ihnen gesuchte Art zu erhalten. Etwas wie das:

 $args = array( 'posts_per_page' => 5, 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => array('post', 'book'), 'post_status' => 'publish' ); $posts = get_posts( $args ); $even = $odd = array(); $ei = 0; $oi = 1; foreach ($posts as $p) { if ('post' == $p->post_type) { $odd[$oi] = $p; $oi = $oi + 2; } elseif ('book' == $p->post_type) { $even[$ei] = $p; $ei = $ei + 2; } } $posts = $odd + $even; ksort($posts); foreach($posts as $post) { echo $post->post_title.$post->post_type; echo '
'; }

Offensichtlich habe ich Post-Typen verwendet, die auf meinem Dev-Server existieren, aber diese auszuwechseln ist trivial. Die Idee ist dieselbe.

Der einzige Weg, den ich kenne, um sicherzustellen, dass Sie für jeden Post-Typ in der Abfrage gleiche Zahlen erhalten, wäre die Erstellung einer UNION . Ich habe nicht die Zeit, das jetzt zu schreiben, aber Option 4 von dieser Antwort sollte Sie beginnen.