当前分类名称(不是术语!)给出了帖子ID

时间:2013-12-04 作者:Luca Reghellin

我可以在任何地方找到关于如何获取特定帖子的术语的信息,但我只需要分类名称。我的意思是:

税务:分类1术语:术语1、术语2等

税务:分类2术语:术语1、术语2、术语3等

我的职位被定为分类1。术语1,分类2。term3正常。

我想知道的是,我的帖子是关于Taxonomy1和Taxonomy2的,而不是关于term1和term3的。

我该怎么做?(顺便说一下,我指的是自定义分类法和自定义帖子类型)

3 个回复
最合适的回答,由SO网友:Luca Reghellin 整理而成

我刚刚发现了一个未记录的函数(在wp-includes/taxonomy.php中)。这是一个使用get\\u object\\u taxonomies():get\\u post\\u taxonomies($post\\u id)的快捷方式。它返回分类名称。

总之,我刚刚编写了另一个辛函数:

function get_taxonomies_info($id){
    global $wpdb;
    return $wpdb->get_results($wpdb->prepare("
        select tax.taxonomy as taxonomy, group_concat(tr.name) as term_names, group_concat(tr.term_id) as term_ids
        from " . $wpdb->prefix . "term_taxonomy tax
        INNER JOIN " . $wpdb->prefix . "term_relationships rel ON tax.term_taxonomy_id =rel.term_taxonomy_id
        INNER JOIN " . $wpdb->prefix . "terms tr ON tr.term_id = tax.term_id
        WHERE rel.object_id = %d
        GROUP BY taxonomy
    ",$id));
}
它将返回如下对象数组:

array(2) {
  [0]=>
  object(stdClass)#115 (3) {
    ["taxonomy"]=>
    string(21) "taxonomy name"
    ["term_names"]=>
    string(16) "term name"
    ["term_ids"]=>
    string(1) "4"
  }
  [1]=>
  object(stdClass)#114 (3) {
    ["taxonomy"]=>
    string(17) "soluzioni_manuali"
    ["term_names"]=>
    string(51) "term name 1,term name 2"
    ["term_ids"]=>
    string(3) "2,3"
  }
}
因此,对于每一行,您将有1个分类法,一个逗号分隔的分类法术语列表,一个逗号分隔的术语ID列表。

显然,可以很容易地更改函数,也可以添加一些其他选项(例如筛选出的分类数组)

希望有帮助

SO网友:mxml.bernard

$t = get_post_type($post);
$taxonomies = get_object_taxonomies($t);
$分类法将包含您帖子的不同分类法的名称。

SO网友:gmazzap

获取文章的所有分类术语,然后查看taxonomy 他们的财产。

有关更多详细信息,请参阅代码注释:

global $post;

// get all the taxonomies registered for the post type    
$allcustomtaxes = get_taxonomies(
  array(\'public\'=> true,\'_builtin\' => false, \'object_type\'=> array($post->post_type) )
);

// get the terms assigned to post, in all custom taxonomies
$terms = wp_get_object_terms($post->ID, $allcustomtaxes);

// get the \'taxonomy\' property of terms objects, removing duplicates
$belongs = empty($terms) ? array(\'none\'), array_unique(wp_list_pluck($terms, \'taxonomy\'));

// example usage:
echo \'Post \' . $post->title . \' belongs to \' . implode(\', \') . $belongs;

结束

相关推荐