Задать вопрос
@akf_13rm

Wordpress. Почему фильтр постов по таксономии выводит записы только по первой таксономии?

Создал custom_post_type (programs) и таксономию (genretax). Теперь хочу вывести на странице archive-programs.php записи в зависимости от указаной для них таксономии.
В верстке используется библиотека MixItUp 3 (для вильтра плиток) https://www.kunkalabs.com/mixitup/ Сейчас выводится так:
61584bb571520384489393.png
А проблема собственно в следующем:
если я укажу для одного поста несколько названий из таксономии ( например, живописные полеты и хелиски) и для другого поста укажу также в таксономиях живописные полеты и хелиски, то при фильтрации (когда выбрать хелиски) постов не находит. Тоесть когда каждому посту задать разное название таксономии, то все верно, а если одинаковые, то выводит первый пост.. Например,

1. Пост "НЕДЕЛЯ ХЕЛИ-СКИ В ВИСТЛЕРЕ" -> таксономия "Живописные полеты";
2. Пост "7 Дней приключений на Гавайях" -> таксономия "Живописные полеты" и таксономия "Индивидуальный тур";
То в таком случае, при клике на таксономию "Живописные полеты" выведет пост 1 и 2, а при клике на таксономию "Индивидуальный тур" не выведет ничего.
Код вывода таксономии:
<ul class="programs_list dark_icon_programs">
<?php $terms = get_terms('genretax');
    foreach($terms as $term){ ?>
    <li class="filter" data-filter=".category<?php echo $term->term_id; ?>"><?php echo $term->name; ?></li>
    <?php } ?>
</ul>

Код вывода произвольного типа записи:
<ul class="list_right_col_item_programs img_width">

<?php 
        $args = array(
          'post_type' => 'programs',
        );
        $query = new WP_Query( $args );

        if ($query->have_posts()) {

          while ( $query->have_posts() ) : $query->the_post(); ?>

              <li class="mix category<?php $terms = get_the_terms( $post->ID, 'genretax' );
                  if( $terms ){
                    $term = array_shift( $terms );
                    echo $term->term_id;
                  } ?>">
                    <a href="<?php the_permalink(); ?>" class="img_col_item_programs">
                        <?php echo get_the_post_thumbnail(get_the_ID()); ?>
                    </a>
                      <a href="<?php the_permalink(); ?>" class="link_col_item_programs"><?php the_title(); ?></a>
              </li>
            <?php endwhile;
        }
            wp_reset_postdata(); ?>
            </ul>


Помогите пожалуйста, никак не выходит разобраться..
  • Вопрос задан
  • 65 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Скорее всего, если у записи несколько категорий, то их все нужно вывести в теге <li>

$classes = array();
$classes[] = 'mix';

if ( $terms = get_the_terms( get_the_ID(), 'genretax' ) ) {
	foreach ( $terms as $key => $term ) {
		$classes[] = 'category' . $term->term_id;
	}
}

echo '<li class="' . implode( ' ', $classes ) . '">';
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы