在get_terms循环中获取帖子

时间:2016-10-13 20:56:38

标签: wordpress taxonomy taxonomy-terms

我设置了一个基本循环来显示自定义分类中的所有术语。

<?php   
$workshops = get_terms( 'workshop', array(
    'orderby'    => 'name',
    'hide_empty' => 0,
) );
foreach ( $workshops as $workshop ) { ?>

        <h3><?php echo $workshop->name; ?></h3>         
        <?php echo term_description($workshop); ?>                     

<?php } ?>

如何在该循环中显示每个相应字词的所有帖子?

例如......

分类标准是电影。条款是喜剧,恐怖等。

我希望输出

喜剧 喜剧术语的描述

  • 电影1
  • 电影2

恐怖 恐怖术语的描述

  • 电影3
  • 电影4

谢谢!富

1 个答案:

答案 0 :(得分:0)

首先,您使用的是get_terms的弃用版本,因此我们应首先修复此问题:

$workshops = get_terms( array(
    'taxonomy' => 'workshop',
    'orderby' => 'name',
    'hide_empty' => false
) );

然后,在您的术语循环中,您需要创建另一个查询来获取属于该术语的所有帖子:

$query = new WP_Query( array(
    'post_type' => 'post',  // Or your custom post type's slug
    'posts_per_page' => -1, // Do not paginate posts
    'tax_query' => array(
        array(
            'taxonomy' => 'workshop',
            'field' => 'term_id',
            'value' => $workshop->term_id
        )
    )
) );

最后,仍然在你的术语循环中,编写另一个循环来构建帖子列表:

<?php if ( $query->have_posts() ): ?>
    <ul class="term-post-list" id="term-<?php echo $workshop->term_id; ?>-posts">

        <?php while ( $query->have_posts() ): $query->the_post(); ?>
            <li id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                <?php the_title(); ?>
            </li>
        <?php endwhile; wp_reset_postdata(); ?>

    </ul>
<?php endif; ?>