2017-04-09 1 views
0

私はcptの投稿を別のブートストラップのタブに入れようとしています。ワードプレスのcptからカテゴリ別に投稿をフィルタリングするif文を作成する

これまでのところ、すべての投稿タイトルが最初のタブに表示されています。 2つ目のタブに1つの投稿タイトルが表示され、次の2つのタブに同じタイトルが表示されます。カテゴリはカスタムタクソノミーではなく、カスタムポストタイプに関連付けられたデフォルトのワードプレスカテゴリです。カスタムポストタイプが「ジャーナル」と呼ばれ、コードはアーカイブjournal.phpの内部にある

PHP

<!-- Tab panes --> 
<div class="tab-content"> 

    <?php if (have_posts()) : ?> 
     <?php while (have_posts()) : the_post(); ?> 

      <!-- cambridge winter college --> 
      <div role="tabpanel" class="tab-pane active" id="tab1"> 
       <!-- accordian --> 
        <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> 
         <?php if (in_category('cambridge-winter-college')) ?> 
          <?php the_title(); ?> 
        </div> 
       <!--/accordian --> 
       <div class="terminator"></div> 
      </div> 
      <!--/cambridge winter college --> 

      <!-- oxford summer 1 --> 
      <div role="tabpanel" class="tab-pane" id="tab2"> 
       <!-- oxford summer college 1 --> 
       <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> 
        <?php if (in_category('oxford_summer_college_1')) ?> 
         <?php the_title(); ?> 
       </div> 
      </div> 
      <!--/oxford summer 1 --> 


      <!-- oxford summer college 2 --> 
      <div role="tabpanel" class="tab-pane" id="tab3"> 
       <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> 
        <?php if (in_category('oxford_summer_college_2')) ?> 
         <?php the_title(); ?> 
       </div> 
      </div> 
      <!--/oxford summer college 2 --> 

      <!-- cambridge summer college --> 
      <div role="tabpanel" class="tab-pane" id="tab4"> 
       <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> 
        <?php if (in_category('cambridge_summer_college')) ?> 
         <?php the_title(); ?> 
       </div> 
      </div> 
      <!-- /cambridge summer college --> 

     <?php endwhile; ?> 
    <?php endif; ?> 

</div> 
<!--/tab content --> 

これを実現する方法についての任意のアイデア?

ありがとうございました

答えて

0

多くの苦労して考えて、私は答えを見つけました。私はワードプレスの読書の設定で10に設定された私の最大投稿を持っていた!ドー!その設定を変更することで、本当に簡単な修正ができました。これはまだCSSのトリックで見つかったものです。 CPTのすべての投稿を-1の設定で呼び出します。ジャーナルをあなたのcpt名に変更してください。

PHP

// CPT all posts in Archive layout 
function set_posts_per_page_for_journal_cpt($query) { 
    if (!is_admin() && $query->is_main_query() && is_post_type_archive('journal')) { 
    $query->set('posts_per_page', '-1'); 
    } 
} 
add_action('pre_get_posts', 'set_posts_per_page_for_journal_cpt'); 

?> 
1

コードの構造を整理する必要があります。ここでの問題は、タブがループ内にあるため、各投稿のすべてのタブを表示していることです。

は、次の操作を行うようにしてください:あなたは、タブ内の投稿をループよ

<div class="tab-content"> 
    <?php if (have_posts()) : ?> 

     <!-- cambridge winter college --> 
     <div role="tabpanel" class="tab-pane active" id="tab1"> 
      <!-- accordian --> 
      <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true"> 
       <?php while (have_posts()) : the_post(); ?> 
        <?php if (in_category('cambridge-winter-college')) : ?> 
         <?php the_title(); ?> 
        <?php endif; ?> 
       <?php endwhile; ?> 
      </div> 
      <!--/accordian --> 
      <div class="terminator"></div> 
     </div> 
     <!--/cambridge winter college --> 

     <?php rewind_posts(); ?> 

     <!-- REPEAT THE CODE ABOVE FOR OTHER TABS --> 

    <?php endif; ?> 
</div> 
<!--/tab content --> 

この道を。

それが動作するかどうかを教えてください。

UPDATE

各ループ間rewind_posts()を呼び出します。

+0

こんにちは、実際にそれが動作するように見えたが、私は今、他のカテゴリから投稿ページに置か取得されていないことがわかります。最初のものはうまくいくが、2番目、3番目および4番目のタブはそうではない!私の完全なコードブロックを参照してください:http://stackoverflow.com/questions/43324052/post-loop-in-category-filter-not-working – vincentieo

+0

@vincentieo、新しいものを作成するのではなく、あなたの質問を更新してください。とにかく、おそらく、各ループの間に 'rewind_posts()'を呼び出さなければならないでしょう。このページの例を確認してください:https://developer.wordpress.org/reference/functions/rewind_posts/ –

+0

申し訳ありませんが、私は更新する必要があるとは思いませんでした。 – vincentieo

関連する問題