get_terms для post->id
Мне нужен способ использовать get_terms так, чтобы получать только таксономии текущей страницы. Например, http://sitename.com/genre/hip_hop должен получать только те таксономии, которые также имеют прикрепленный жанр хип-хоп.
wp_get_object_terms почти работает для меня, но не выполняет цикл так, как это делает get_terms.
Вот что у меня есть сейчас
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post();
$cam_brands = get_the_terms( $post->ID, 'sub_genre' );?>
<?php foreach( $cam_brands as $brand ) : ?>
<h3 class="genre-title"> <?php echo $brand->name; ?> </h3>
<?php $wpq = array( 'post_type' => 'track', 'taxonomy' => 'sub_genre', 'term' => $brand->slug, 'post_status' => 'publish','posts_per_page' => -1, 'caller_get_posts'=> 1 );
$brand_posts = new WP_Query ($wpq);?>
<ul>
<?php foreach( $brand_posts->posts as $post ) : ?>
<li> <?php echo $post->post_title; ?> <a class="sc-player" href="<?php echo get('soundcloud_link'); ?>">трек</a> </li>
<?php endforeach ?>
</ul>
<?php endforeach ?>
<?php endwhile; ?>
<?php endif; ?>

Я думаю, вам нужно использовать функцию get_the_terms
, которая позволяет получить термины, прикреплённые к записи, указав её ID и таксономию.

Возможно, вам стоит заменить внешний цикл foreach
на обычный оператор for
. Я сталкивался с проблемами подсчёта итераций при использовании foreach
внутри другого foreach
(вложенные операторы foreach). Это может влиять на вывод вашего кода. PHP документировал эту проблему на своём сайте.
