Как я могу показывать последние сообщения из той же таксономии, что и просматриваемая публикация?

Мне интересно, как я могу показывать недавние сообщения из той же таксономии, что и публикация, которая просматривается в данный момент (работа с настраиваемыми типами сообщений и пользовательскими таксономиями).

Если бы это была просто категория регулярного сообщения, это выглядело бы так:

<?php global $post; $categories = get_the_category(); foreach ($categories as $category) : ?> <h3>More News From This Category</h3> <ul> <?php $posts = get_posts('numberposts=20&category='. $category->term_id); foreach($posts as $post) : ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> <li><strong><a href="<?php echo get_category_link($category->term_id);?>" title="View all posts filed under <?php echo $category->name; ?>">ARCHIVE FOR '<?php echo $category->name; ?>' CATEGORY &raquo;</a></strong></li> <?php endforeach; ?> </ul> 

Но с пользовательскими сообщениями / таксономиями должно быть другое решение. Не удалось найти ничего полезного в wordpress codex.

Solutions Collecting From Web of "Как я могу показывать последние сообщения из той же таксономии, что и просматриваемая публикация?"

Вы пытались использовать get_the_terms() ?

Быстро и грязно, из вашего примера кода:

 <?php global $post; $terms = get_the_terms( $post->ID, 'some-term' ); foreach ($terms as $category) : ?> <h3>More News From This Category</h3> <ul> <?php $posts = get_posts('numberposts=20&category='. $category->term_id); foreach($posts as $post) : ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> <li><strong><a href="<?php echo get_category_link($category->term_id);?>" title="View all posts filed under <?php echo $category->name; ?>">ARCHIVE FOR '<?php echo $category->name; ?>' CATEGORY &raquo;</a></strong></li> <?php endforeach; ?> </ul> 

См. Также: the_terms() и get_the_term_list()

Чтобы получить условия (из пользовательской таксономии, называемой 'my-taxonomy-name' ), связанной с сообщением с идентификатором $post_id :

 $terms = get_the_terms( $post_id, 'my-taxonomy-name' ); 

Это возвращает массив терминных объектов. (см. Codex ) Выберите первый, скажем: $ term-slug = $ terms [0] -> slug;

И затем запрос с использованием get_posts , он принимает нашу таксономию как ключ (см.

 $args = array( 'numberposts' => 20, 'my-taxonomy-name' => $term-slug ); $posts = get_posts ( $args ); 

См. Codex о пользовательских таксономах и get_posts