如何查询帖子并在结果中返回它们的相关分类?

时间:2012-03-02 作者:Jason

我创建了一个包含电视频道数据的自定义帖子类型。每个频道都有自己的帖子。我还创建了通道组的自定义分类法。我要做的是查询所有数据,并将其显示在单个页面的表上,如下所示:

Channel # | Channel Name | Basic Package | Delux Package | Elite Package
1         | NBC          | X             | X             | X
2         | ESPN Classic |               | X             | X
我需要的是一个查询,它将返回每个帖子的相关分类法。这就是我目前的情况:

$args = array(
    \'post_type\' => \'my_channel\',
    \'numberposts\' => -1,
    \'order_by\' => \'menu_order\',
    \'order\' => \'ASC\',
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'my_channel_package\',
            \'field\' => \'slug\',
            \'terms\' => array(\'basic\', \'delux\', \'elite\'),
        ),
    ),
);

$posts_array = get_posts($args);
但是post数组不返回分类数据。我的下一个选项是使用自定义SQL查询数据库,还是WordPress API中缺少一个功能?

谢谢杰森

1 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

欢迎来到WPSE Jason,get_posts 用于查询帖子tax_query 其中一部分允许您选择属于特定标准分类法的帖子。

要获取特定帖子的分类术语,请使用get_the_terms, 将帖子的ID和分类传递给它。它返回一个与该帖子关联并属于指定分类法的分类法术语对象数组。

示例用法:

<?php
$terms = get_the_terms( $post->ID, \'on-draught\' );
//Echo a list of \'on-draught\' terms for this post   
echo \'<ul>\';                    
if ( $terms && ! is_wp_error( $terms ) ) : 
    foreach ( $terms as $term ) {
        echo \'<li>\'.$term->name.\'</li>\';
    }
echo \'</ul>\';
?>

结束