Пройдите по категориям и создайте вкладку для каждой


Я пытаюсь создать страницу, которая содержит все категории моего пользовательского типа сообщений в виде вкладок с содержимым вкладки.

Я могу отобразить все названия категорий в виде вкладок, но мне нужно выполнить запрос в каждой области содержимого вкладки к соответствующей категории.

Поэтому, когда я нажимаю на вкладку с именем "1", в области содержимого вкладки должны отображаться только сообщения из категории, принадлежащей вкладке с именем "1".

Мой код до сих пор:

  <?php
echo '<ul class="nav nav-tabs" role="tablist">';

 $args = array(
 'hide_empty'=> 1,
 'orderby' => 'name',
 'order' => 'ASC'
 );

$categories = get_categories($args);

  foreach($categories as $category) { 

    echo '<li><a href="#' . $category->name.'" role="tab" data-toggle="tab">' .      
    $category->name.'</a></li>';
    $cat_name = $category->name;

    } 
    echo '</ul>';
    echo '<div class="tab-content">';
      foreach($categories as $category) { 
        echo '<div class="tab-pane" id="' . $category->name.'">';


        ?>

 <?php 

     $the_query = new WP_Query(array(
      'post_type' => 'acme_product',
      'posts_per_page' => 100,
      'category_name' => $category->slug
        )); 
     while ( $the_query->have_posts() ) : 
     $the_query->the_post();
     ?>

            <h1><?php the_title(); ?></h1>

                   <?php 
    endwhile; 
   wp_reset_postdata();
   ?>   


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

Проблемы в том, что каждый контент область отображает все сообщения каждой категории.

Вывод html:

   <div class="container">

               <ul class="nav nav-tabs" role="tablist"><li><a href="#Audi" role="tab" data-toggle="tab">Audi</a></li><li><a href="#Skoda" role="tab" data-toggle="tab">Skoda</a></li></ul><div class="tab-content"><div class="tab-pane" id="Audi">

        <h1>fffffffffffff</h1>




<div class="tab-pane" id="Skoda">

        <h1>qqqqqqqqqqqqqqqqqqq</h1>




</div>                       
    </div>

Есть какие-нибудь предложения?

Author: TietjeDK, 2014-07-16

2 answers

Попробуйте 'category_name' => $category->slug вместо 'category_name' => $cat_name.

Вы также отсутствуете wp_reset_postdata(); сразу после endwhile;.

 2
Author: deflime, 2014-07-16 22:51:53

Попробуйте этот код

<?php
echo '<ul class="nav nav-tabs" role="tablist">';
$args = array(
    'hide_empty'=> 1,
    'orderby' => 'name',
    'order' => 'ASC'
);
$categories = get_categories($args);
foreach($categories as $category) { 
    echo 
        '<li>
            <a href="#'.$category->slug.'" role="tab" data-toggle="tab">    
                '.$category->name.'
            </a>
        </li>';
}
echo '</ul>';

echo '<div class="tab-content">';
foreach($categories as $category) { 
    echo '<div class="tab-pane" id="' . $category->slug.'">';
    $the_query = new WP_Query(array(
        'post_type' => 'acme_product',
        'posts_per_page' => 100,
        'category_name' => $category->slug
    ));

    while ( $the_query->have_posts() ) : 
    $the_query->the_post();
    echo '<h1>';
        the_title();
    echo '</h1>';
    endwhile; 
} 
echo '</div>';
?>
 1
Author: Shwan Namiq, 2014-11-08 21:48:10