2016-07-20 2 views
2

私はワードプレスで複数のループコーデックスを読んだことがありますが、これを行う方法についてはまだ少し混乱しています。ワードプレス - どのように2つ以上のループを一緒にマージしますか?

デフォルトクエリから3つのクエリを実行する必要があります。

-1 = Xカテゴリ

-2から最新のポスト= Yカテゴリ

-3からすべての記事= Xカテゴリの(それに-1引っ張っているため)、最新以外のすべての投稿

これは私が現在、私のindex.phpがセットアップされている方法です。

<?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(); 

私は2つのwp_queriesとしてそれを書いたが、二番目のは私にロードされません。私はこれのために第三を試みなかった。最初にデフォルトのループに対してwp_queryが問題ありませんか?第二に、これをどのように再加工してループ以上のもので動作するのか。

+0

生成されたコンテンツはソースに表示されますが、 '.owl-carousel'クラスには' display:none'スタイルがあるようです。 – Will

+0

ソースを見ているもう一つの問題は、 '#primary 'が' .recent-news-banner'の中にあるようですが、私はそのdivを閉じたので、ここで何が起こっているのか分かりません。私はそれがループが書かれている方法だと思います。 –

+0

最初のループで2番目のエコーで開かれた8個のdivsをカウントしますが、7個だけが閉じます。実際に、エコーをやっている理由はありますか?これらのdivをインライン化するだけで、書式を設定してインデントすることができますので、何が起こっているのかを簡単に確認できます。 – Will

答えて

0

コードにいくつか問題がありますが、ループが間違っているとは思われません。あなたのページソースの2番目のループで生成されたコンテンツを見ることができます。 Owl Carouselは初期化されていないようです。

問題1:何も$に割り当てされていないので、$('#owl-events').owlCarousel(...)コールは(動作していないあなたはjQueryのが引き継ぐようにするのいずれか必要があります実際には、それが働いているmain.jsで何も見えません。 $または明示的jQueryの代わり$使用

問題2:。。。閉じられていないdivsあなたが9つのdivが、近いうちわずか8をエコー最初のループでは、これが1にそれらのすべてを積み重ねたときに欠場するのはとても簡単です。あなたはその内容をechoにする必要はありませんそれらをページ上に配置し、必要に応じてPHPを散在させ、何が起こっているかを見るためにいくつかの書式設定を維持します。たとえば:

... 
<?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;?> 
... 

は、他の問題があるかもしれませんが、これらの2はあなたのスタートを与えると、あなた(と私たち)がゆがんであるかもしれない他の任意のものを見ることができるはずです。

関連する問題