Как вывести список категорий пользовательской таксономии?
У меня есть произвольный тип записей (CPT), который содержит продукты, и таксономия, содержащая термины продуктов. Мне нужно отобразить эти термины на странице 'Products', и при клике на определенный термин должны отображаться продукты, которые относятся к этому термину.
Кстати, когда я нажимаю 'просмотр' для определенного термина, отображается заголовок только одного продукта. Я создал CPT и таксономию с помощью плагина CPT UI.
Вот код моего шаблона page-products.php (который выводит все продукты):
<?php
/* Название шаблона: Products
*/
?>
<?php get_header('header.php') ?>
<!--Открывающий контейнер или обертка вне цикла-->
<div class="container my-container">
<!--начало цикла-->
<?php
$args=array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => 10,
);
$the_query = null;
$the_query = new WP_Query($args);
if( $the_query->have_posts() ) {
$i = 0;
while ($the_query->have_posts()) : $the_query->the_post();
if($i % 3 == 0) { ?>
<div class="row">
<?php
}
?>
<div class="col-md-4">
<div class="my-inner">
<?php the_post_thumbnail(); ?>
<div class="title"><a href="<?php the_permalink(); ?>"><?php
the_title(); ?></a></div>
<?php the_excerpt(); ?>
</div>
</div>
<?php $i++;
if($i != 0 && $i % 3 == 0) { ?>
</div><!--/.row-->
<div class="clearfix">fgfd</div>
<?php
} ?>
<?php
endwhile;
}
wp_reset_query();
?>
Чтобы получить список ваших пользовательских таксономий, вы можете использовать функцию get_terms()
для создания цикла:
// Получаем термины таксономии
$terms = get_terms(
array(
'taxonomy' => 'your-taxonomy',
'hide_empty' => false,
)
);
// Проверяем, существуют ли термины
if ( ! empty( $terms ) && is_array( $terms ) ) {
// Запускаем цикл и выводим все термины
foreach ( $terms as $term ) { ?>
<a href="<?php echo esc_url( get_term_link( $term ) ) ?>">
<?php echo $term->name; ?>
</a><?php
}
}

Спасибо, это работает! Но у меня появилась другая проблема - когда я кликаю на категорию, отображается только один заголовок поста. Нужен ли специальный шаблон, который отображает посты по категориям? Извините, если вопрос глупый, но я совсем запутался.

Пожалуйста. Вопрос совсем не глупый. Это может быть по нескольким причинам. Одна из них - возможно, вы установили количество постов на странице равным 1 в настройках "Чтение" в админке. Другая проблема может быть с шаблоном. Попробуйте проверить наличие файлов taxonomy-your_taxonomy.php
или taxonomy.php
, если они существуют. Также у вас может быть фильтр pre_get_posts
в файле functions.php
, который ограничивает результаты.

Хорошо, создание шаблона таксономии сработало - при клике на категорию я получаю список своих постов. Но при использовании кода из моего исходного сообщения я получаю одни и те же товары, независимо от того, на какую категорию я нажимаю. Например, у меня есть категория с 3 товарами, и когда я кликаю на нее, я вижу эти товары, но те же самые товары отображаются при клике на другую категорию. Думаю, мне нужно использовать ID категории, верно?

Конечно. Вам нужно использовать tax_query
, если вы планируете писать собственный код. Ознакомьтесь с классом WP_Query
и не стесняйтесь задавать новый вопрос, если проблема сохранится.

Привет, Джек. Я действительно хочу поблагодарить тебя за всю помощь. Мне удалось достичь желаемого результата. Ура тебе, дружище! :)
