2016-07-20 10 views
2

Ich habe die mehrfachen Schleifen Codex auf WordPress gelesen, aber ich bin immer noch ein wenig verwirrt, wie dies zu tun ist.WordPress - Wie verschmelzt man zwei oder mehr Loops miteinander?

Ich muss 3 Abfragen von der Standardabfrage ausführen.

-1 = der neueste Beitrag von X Kategorie

-2 = alle Beiträge von Y Kategorie

-3 = alle Beiträge mit Ausnahme der letzten von X Kategorie (weil es in -1 gezogen wird)

Dies ist, wie ich meine index.php gründen derzeit haben:

<?php 

get_header(); ?> 

    <?php 
     $args = array(
      'posts_per_page' => 1, 
      'category_name' => 'news', 
     ); 
     $news_query = new WP_Query($args); 
     if ($news_query->have_posts()) : 
      ?> 

      <?php while ($news_query->have_posts()) : $news_query->the_post(); ?> 

       <?php 
        $featured_img = get_the_post_thumbnail_url($post->ID, 'full'); 
        $date = Date('m/y'); 
        $title = get_the_title($post->ID); 
        $link = get_the_permalink($post->ID);    
       ?> 

       <?php echo '<div class="recent-news-banner" style="background: url(' . $featured_img . ') no-repeat center center; background-size: cover;">'; ?> 

       <?php echo '<div class="container"><div class="row"><div class="col-md-8"><div class="' . 'entry-meta' . '"><div class="meta-date">' . $date . '</div><div class="meta-info"><div class="meta-title"><h2><a href="' . get_permalink() . '">' . get_the_title() . '</a></h2><div class="meta-excerpt">' . get_the_excerpt() . '</div></div></div></div></div></div>'; ?> 

       <?php echo '</div>'; ?> 

      <?php endwhile;?> 

     <?php else : ?> 
      <p><?php _e("No News Found", 'news'); ?></p> 
     <?php wp_reset_postdata(); ?> 
     <?php endif 
    ?> 

    <div id="primary" class="content-area"> 
     <main id="main" class="site-main" role="main"> 

     <?php 
      $args = array(
       'posts_per_page' => -1, 
       'category_name' => 'events', 
      ); 
      $events_query = new WP_Query($args); 

      echo '<div id="owl-testimonials" class="owl-theme owl-carousel container"><div class="row"><div class="col-xs-12">'; 

      if ($events_query->have_posts()) : 
       ?> 

       <?php while ($events_query->have_posts()) : $events_query->the_post(); ?> 

        <?php 
         $featured_img = get_the_post_thumbnail_url($post->ID, 'full'); 
         $date = Date('F j, Y'); 
         $title = get_the_title($post->ID); 
         $link = get_the_permalink($post->ID);    
        ?> 

        <?php echo '<div class="event-item" style="background: url(' . $featured_img . ') no-repeat center center; background-size: cover;">'; ?> 

        <?php echo '<div class="meta-date">' . $date . '</div>'; ?> 

        <?php echo '</div>'; ?> 

        <?php echo '<div class="meta-info"><div class="meta-title"><h3><a href="' . get_permalink() . '">' . get_the_title() . '</a></h3></div></div>'; ?> 

       <?php endwhile;?> 

       <?php echo '</div></div></div>'; ?> 

      <?php else : ?> 
       <p><?php _e("No News Found", 'news'); ?></p> 
      <?php wp_reset_postdata(); ?> 
      <?php endif 
     ?> 

     </main><!-- #main --> 
    </div><!-- #primary --> 

<?php 
get_footer(); 

ich es als zwei wp_queries schrieb, aber der zweite wird auf meinemnicht geladen werden. Ich habe den dritten deswegen nicht versucht. Zunächst einmal ist wp_query in Ordnung für die Standardschleife? Zweitens, wie kann ich das überarbeiten, damit es mit mehr als loop funktioniert.

+0

Der generierte Inhalt erscheint in der Quelle, aber es scheint, dass es einen 'display: none' Stil auf der' .owl-karussell' Klasse gibt - fehlt Ihnen vielleicht ein Init dafür? – Will

+0

Ein anderes Problem, das sich auf die Quelle bezieht, ist, dass '# primary' innerhalb von' .recent-news-banner' liegt, aber ich habe dieses div geschlossen, also keine Ahnung, was hier vor sich geht. Ich denke, es ist, wie die Schleifen geschrieben werden. –

+0

Ich zähle 8 divs, die im zweiten Echo in der ersten Schleife geöffnet sind, aber nur 7 schließt. Gibt es einen Grund, warum du überhaupt ein Echo machst? Sie könnten diese Divs einfach inline einbinden, damit Sie sie formatieren und einrücken können, damit Sie leichter sehen können, was vor sich geht ... – Will

Antwort

0

Es gibt ein paar Probleme mit Ihrem Code, aber ich glaube nicht, dass die Schleifen falsch sind. Ich kann den Inhalt sehen, der in der zweiten Schleife in Ihrer Seitenquelle generiert wurde. Es scheint, dass Owl Carousel nicht initialisiert wird.

Ausgabe 1: Nichts wird zu $ zugewiesen, so dass der $('#owl-events').owlCarousel(...) Aufruf funktioniert nicht (in der Tat, es sieht nicht wie etwas in main.js arbeiten Sie werden entweder müssen jQuery lassen nehmen. $ oder verwendet explizit jQuery statt $

Ausgabe 2:... Unclosed divs In der ersten Schleife Sie 9 divs echo aus, aber in der Nähe nur 8 von ihnen das ist wirklich leicht zu übersehen, wenn sie alle auf einer Ramm Sie müssen nicht echo diesen Inhalt, Sie könnten nur inline sie auf der Seite, und durchsetzen php, wo benötigt, und einige Formatierungen beibehalten, so dass Sie sehen können, was vor sich geht. Zum Beispiel:

... 
<?php while ($news_query->have_posts()) : $news_query->the_post(); ?> 
... 
    <div class="recent-news-banner" style="background: url(<?= $featured_img ?>') no-repeat center center; background-size: cover;">'; ?> 
    <div class="container"> 
     <div class="row"> 
     <div class="col-md-8"> 
      <div class="entry-meta"> 
      <div class="meta-date"><?= $date ?></div> 
      <div class="meta-info"> 
       <div class="meta-title"> 
       <h2> 
        <a href="<?= get_permalink() ?>"><?= get_the_title() ?></a> 
       </h2> 
       <div class="meta-excerpt"><?= get_the_excerpt() ?></div> 
       </div> 
      </div> 
      </div> 
     </div> 
     </div> 
    </div> 
    <!-- uh oh, not enough closing divs --> 
<?php endwhile;?> 
... 

Es können auch andere Probleme sein, aber diese beiden sollten Sie einen Start geben und ermöglichen es Ihnen (und uns), irgend etwas anderes zu sehen, die schief sein könnten.

Verwandte Themen