Получение пользовательской таксономии из произвольного типа записи
У меня есть произвольный тип записи email_block и пользовательская таксономия block_type. Мне нужно перебрать все email блоки и определить, к какой пользовательской таксономии (block_type) они относятся. Я знаю, как получить все произвольные типы записей email_block, но испытываю трудности с определением того, к какому block_type они принадлежат.
Вот код, который у меня есть на данный момент. Я использую поле отношений из плагина Advanced Custom Fields для фильтрации email блоков, которые я хочу отобразить.
<?php
$posts = get_field('block_selector');
if( $posts ): ?>
<ul>
<?php foreach( $posts as $post): // переменная должна называться $post (ВАЖНО) ?>
<?php setup_postdata($post); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<span>Произвольное поле из $post: <?php the_field('author'); ?></span>
</li>
<?php endforeach; ?>
</ul>
<?php wp_reset_postdata(); // ВАЖНО - сбрасываем объект $post, чтобы оставшаяся часть страницы работала корректно
endif; ?>
Вы имеете в виду get_the_terms()?
<?php
// Получаем термины таксономии 'block_type' для текущего поста
$terms = get_the_terms( $post->ID, 'block_type' );
// Перебираем все полученные термины
foreach($terms as $term) {
// Выводим название каждого термина
echo $term->name;
}
?>
Или я слишком упростил этот пример?

это лучший способ сделать это
<?php
$taxonomy = 'movies-category';
$terms = get_object_term_cache( $post->ID, $taxonomy );
$output = '';
foreach($terms as $term) {
if(!empty($output))
$output .= ' | ';
$output .= '<span class="cat"><a href="'. esc_url( get_term_link( $term )). '">'.$term->name.'</a></span>';
}
echo $output;
?>

Есть ли способ узнать иерархию пользовательских таксономий и передать ее в вывод?

Вы можете ознакомиться с этим материалом: https://developer.wordpress.org/reference/functions/get_term_parents_list/
Или https://wordpress.stackexchange.com/a/25035/185919
