Mehrere Schleifen auf benutzerdefinierte Beitragstypvorlage?

Ich habe Probleme beim Hinzufügen mehrerer Loops. Ich habe einen benutzerdefinierten Beitragstyp (Standorte), der eine einzelne Seitenvorlage (single-locations.php) verwendet. Ich versuche, dieser Vorlage zusätzliche Schleifen hinzuzufügen, die (x) die Anzahl der Beiträge aus verschiedenen Kategorien (reguläre Postkategorien) anzeigen, abhängig davon, welche benutzerdefinierte Beitragstyp-ID ein Benutzer hat.

Das Problem, das auftritt, besteht darin, dass basierend auf dem folgenden Code alle definierten benutzerdefinierten Post-Typ-IDs die gleichen 5 Posts laden (in der ersten Abfrage angezeigt), aber nicht von den definierten definierten Kategorien. Außerdem werden die Abfragen unter den IDs für benutzerdefinierte Posttypen nicht berücksichtigt. Ich bin mir nicht sicher, ob ich die if / elsif-statementen durcheinander gebracht habe oder ob die Hauptschleife des benutzerdefinierten Post-Typs störend ist.

Jeder Rat, wie man das schafft, wäre großartig. 🙂

ID, 'bb-history', true ); $meta_message = get_post_meta($post->ID, 'bb-mayors-message', true ); $meta_news = get_post_meta($post->ID, 'bb-current-news', true ); ?>

Mayor's Message

Current News

5, 'category' => '5', 'orderby' => 'post_date', 'order' => 'DESC'); $loc1 = new WP_Query($args); while ( $loc1->have_posts() ) : $loc1->the_post(); global $post; ?>

<a href="https://wordpress.stackexchange.com/questions/97424/multiple-loops-on-custom-post-type-template/" rel="bookmark" title="">

3, 'category' => '10', 'orderby' => 'post_date', 'order' => 'DESC'); $loc2 = new WP_Query($args); while ( $loc2->have_posts() ) : $loc2->the_post(); global $post; ?>

<a href="https://wordpress.stackexchange.com/questions/97424/multiple-loops-on-custom-post-type-template/" rel="bookmark" title="">

3, 'category' => '7', 'orderby' => 'post_date', 'order' => 'DESC'); $loc3 = new WP_Query($args); while ( $loc3->have_posts() ) : $loc3->the_post(); global $post; ?>

<a href="https://wordpress.stackexchange.com/questions/97424/multiple-loops-on-custom-post-type-template/" rel="bookmark" title="">

3, 'category' => '8', 'orderby' => 'post_date', 'order' => 'DESC'); $loc4 = new WP_Query($args); while ( $loc4->have_posts() ) : $loc4->the_post(); global $post; ?>

<a href="https://wordpress.stackexchange.com/questions/97424/multiple-loops-on-custom-post-type-template/" rel="bookmark" title="">

3, 'category' => '9', 'orderby' => 'post_date', 'order' => 'DESC'); $loc5 = new WP_Query($args); while ( $loc5->have_posts() ) : $loc5->the_post(); global $post; ?>

<a href="https://wordpress.stackexchange.com/questions/97424/multiple-loops-on-custom-post-type-template/" rel="bookmark" title="">

<article role="article">
'' ) ); ?>
<article >

Solutions Collecting From Web of "Mehrere Schleifen auf benutzerdefinierte Beitragstypvorlage?"

Es klingt wie das, was Sie tun möchten, ist eine Art von “verwandten Posts” -function für Ihre “Standorte” einzelne Post-Anzeige basierend auf der Kategorie.

Sie müssen nicht überprüfen, ob der Post im Post-Typ “Standorte” ist. Sie verwenden single-locations.php sei denn, Ihre Seite ist defekt. Nur die Posts von “Locations” sollten dort erscheinen. Sie müssen wirklich nur die ID überprüfen.

 // Most of $args is the same every time. // no need to repeat it $args = array( 'posts_per_page' => 5, 'orderby' => 'post_date', 'order' => 'DESC' ); if ( 44 == $post->ID ){ $args['cat'] = 5; // Note: the parameter is 'cat' not category } elseif (46 == $post->ID ) { $args['cat'] = 10; // Note: the parameter is 'cat' not category } // and so on $loc = new WP_Query($args); while ( $loc->have_posts() ) : $loc->the_post(); global $post; ?> 

< ?php the_title(); ?>

< ?php the_excerpt(); endwhile; wp_reset_postdata();

Ich habe mir die Freiheit genommen, deinen Code aufzuräumen.

  1. Sie müssen das komplette $args Array nicht jedes Mal wiederholen, da sich das meiste davon nicht ändert.
  2. Beachten Sie den Wechsel von category zu cat
  3. Sie müssen für jede Kategorie keine andere Variable oder eine andere Abfrage erstellen. Sie können den gleichen Namen und eine Abfrage verwenden. Erstellen Sie stattdessen das Abfrageparameterarray und fügen Sie anschließend die Abfrage selbst und den Loop ein.

Das ist viel Code zu lesen. Entschuldigung, wenn ich etwas verpasst habe, aber ich denke, das sollte für dich ein bisschen besser funktionieren.