Пройдите по категориям и создайте вкладку для каждой
Я пытаюсь создать страницу, которая содержит все категории моего пользовательского типа сообщений в виде вкладок с содержимым вкладки.
Я могу отобразить все названия категорий в виде вкладок, но мне нужно выполнить запрос в каждой области содержимого вкладки к соответствующей категории.
Поэтому, когда я нажимаю на вкладку с именем "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>
Есть какие-нибудь предложения?
2 answers
Попробуйте 'category_name' => $category->slug
вместо 'category_name' => $cat_name
.
Вы также отсутствуете wp_reset_postdata();
сразу после endwhile;
.
Попробуйте этот код
<?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>';
?>