Как вывести список категорий пользовательской таксономии?

1 дек. 2017 г., 11:49:53
Просмотры: 37K
Голосов: 6

У меня есть произвольный тип записей (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();
    ?>

3
Комментарии

Это происходит автоматически, если вы используете основной запрос в правильных шаблонах. Ознакомьтесь с Иерархией шаблонов, чтобы увидеть требуемые шаблоны. Архивы типов записей/таксономий не должны и не могут быть реализованы как шаблоны страниц.

Jacob Peattie Jacob Peattie
1 дек. 2017 г. 11:51:19

Не могли бы вы уточнить? Сначала мне нужно выполнить запрос терминов таксономии в моем page-products.php, верно?

oksite oksite
1 дек. 2017 г. 12:06:56

Нет. Не должно быть никаких шаблонов страниц или вторичных запросов.

Jacob Peattie Jacob Peattie
1 дек. 2017 г. 12:44:48
Все ответы на вопрос 1
6
14

Чтобы получить список ваших пользовательских таксономий, вы можете использовать функцию 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 дек. 2017 г. 12:24:19
Комментарии

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

oksite oksite
1 дек. 2017 г. 12:30:48

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

Johansson Johansson
1 дек. 2017 г. 12:38:07

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

oksite oksite
1 дек. 2017 г. 12:44:39

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

Johansson Johansson
1 дек. 2017 г. 14:12:06

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

oksite oksite
1 дек. 2017 г. 14:14:46

как получить таксономию категории

Ravindrasinh Zala Ravindrasinh Zala
15 сент. 2020 г. 11:53:54
Показать остальные 1 комментариев