Erhalten Sie einen Beitrag von der Kategorie nach Priorität

Ich möchte 3 Posts vom benutzerdefinierten Post-Typ erhalten. Aber ich möchte das nach Kategorie Priorität tun. Wenn die “featured” Kategorie 3 bevorstehende Events hat, dann möchte ich 3 Posts davon zeigen, wenn die “featured” Kategorie keine 3 bevorstehenden Events hat, dann möchte ich auch Beiträge von anderen Kategorie + Posts ohne Kategorie bekommen.

Das Endergebnis gibt 3 bevorstehende Ereignisse zurück. Ich bin ein wenig verwirrt darüber, wie ich diesen Bedingungsparameter auf WP_Query hinzufügen kann.

Aktueller Code (der nur maximal 3 Beiträge aus der angezeigten Kategorie zurückgibt) –

$events_args = array( 'post_type' => 'ctc_event', 'meta_query' => array( array( 'key' => '_ctc_event_end_date', 'value' => date_i18n( 'Ymd' ), 'compare' => '>=', 'type' => 'DATE' ), ), 'meta_key' => '_ctc_event_start_date_start_time', 'meta_type' => 'DATETIME', 'orderby' => 'meta_value', 'order' => 'ASC', 'posts_per_page' => 3, 'tax_query' => array( array( 'taxonomy' => 'ctc_event_category', 'field' => 'slug', 'terms' => 'featured', ), ), ); $events = new WP_Query( $events_args ); 

Danke im Voraus.

Solutions Collecting From Web of "Erhalten Sie einen Beitrag von der Kategorie nach Priorität"

Sie können zuerst Beiträge von Ihrer bevorzugten Kategorie abrufen und prüfen, ob Posts vorhanden sind oder nicht. Wenn ja, werden Sie sie zeigen.

Wenn nicht, werden Sie eine weitere Abfrage erstellen, die 3 Posts aus zufälligen Kategorien (wie Sie beschrieben haben) erhalten und sie anzeigen.

 $events_args = array( // include the code in your question here ); $events = new WP_Query( $events_args ); if ($events->have_posts()){ while ($events->have_posts()) : the_post(); // your loop code here endwhile; } if ((3-($events->found_posts)) > 0) { wp_reset_postdata(); $remaining = 3 - ($events->found_posts); $random_args = array( // your desired array of attributes, set 'posts_per_page' to $remaining ); $random_posts = new WP_Query($random_args); while ($random_posts->have_posts()) : the_post(); // your loop code here endwhile; }