WordPress有没有办法获取一些选定帖子的所有类别?

时间:2016-10-17 作者:Arif

我想得到一些选定职位的所有类别
例如,我有post id,如1、2、3。帖子1、2、3分别有{猫、狗}、{狗、老鼠}、{老鼠}等类别。我想要一个类别列表,其中包括{猫,狗,老鼠}。

我已经研究了两个WP函数,
get_terms: 不允许我提供post IDwp_get_post_terms: 这只返回单个帖子的条款

我找到了两种实现相同目标的方法:

1. Loop
首先获取帖子ID,然后使用循环获取每个帖子的类别。当有太多的帖子时,这是太多的查询。

2. Custom query
下面的查询还提供了所需的结果。但运行自定义查询并不是WP的风格。我真的想避免这种解决方案。

select * from sh_7_terms
where term_id in (
    select distinct(sh_7_terms.term_id)
    from sh_7_terms, sh_7_term_taxonomy, sh_7_term_relationships, sh_7_posts
    where 
        sh_7_terms.term_id = sh_7_term_taxonomy.term_id AND
        sh_7_term_taxonomy.term_taxonomy_id = sh_7_term_relationships.term_taxonomy_id AND
        sh_7_term_relationships.object_id = sh_7_posts.ID AND
        sh_7_term_taxonomy.taxonomy = \'product_cat\' and 
        sh_7_posts.ID IN ( 1, 2, 3 )
)
Question:
是否还有其他优化的解决方案?

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

进来wp_get_object_terms - 它接受一个对象ID数组,并检索其所有(唯一)附加的术语:

$terms = wp_get_object_terms( [ 1, 2, 3 ], \'category\' );
foreach ( $terms as $term )
    echo "$term->name<br />";

相关推荐

Get_Terms()在自定义帖子类型上提供了错误的自定义分类Childs计数

我有一个自定义的分类法,我们称之为;指示;。我们将其与自定义帖子类型“配合使用”;产品;。我们对术语Parent->;小孩父级从未与产品建立连接。我使用它来创建一个自定义的select字段,并且需要父字段作为optgroup标题。是否使用此结构父级子级1(根据后端的2篇帖子)子级2(根据后端的1篇帖子)但是如果我查询子主题并检查计数,它总是显示为NULL。在Wordpress仪表板中,它使用2和1正确定位。为什么不在前端呢。 $args = array( \'hide_e