如何输出层次分类路径,只分配最深层的术语?

时间:2016-03-23 作者:Su\'

假设我们有一个深入到三个层次的分类法,例如。A > B > C.

接下来,我们创建一个post并将其分配给“C”术语<在我们这里,只有一个任务;这是一件事情发生的地方。

在帖子的页面上,我不仅要输出指定的术语,还要向其输出层次路径。因此,尽管帖子只分配给“C”,但我还是想显示“A>B>C”,其中包含指向存档页面的链接,这些链接适用于所有这些术语。

get_the_term_list 我不会这么做,除非我整整一周都在使用非常糟糕的搜索词,否则这显然很难做到,而且我找到的每一个假定的解决方案都在某种程度上被破坏了。(需要严格假设分类术语数据库ID值的顺序。)<这里是one example 这似乎就是我的真实情况。在我的安装中没有输出任何内容var_dump($links_string) 产生类似"string(0) "";" (请注意,显示“---”的两个点应折叠为一个破折号。)

我错过什么了吗?

注意事项Idon\'t 想要:

手动分配层次结构中的每个术语。这显然没有必要。如果您访问示例结构中“A”的归档页面,WordPress会很高兴地列出每个子术语中的帖子,因此显然它有某种方式可以查看层次结构<如果你曾经有过客户,你知道这是做不到的

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

使用get_the_terms 获取帖子的词条,然后使用get_ancestors 获取该术语的父ID的数组。

$tax = \'category\';
$terms = get_the_terms( get_the_ID(), $tax );
if( $terms && ! is_wp_error( $terms ) ){
    // check for and output any ancestors
    $ancestors = array_reverse(get_ancestors( $terms[0]->term_id, $tax ));
    if( $ancestors ){
        foreach( $ancestors as $ancestor ){
            $parent = get_term( $ancestor, $tax );
            if( $parent && ! is_wp_error( $parent ) ){
                echo $parent->name;
                echo get_term_link( $parent );
            }
        }
    }
    // output directly assigned term
    echo $terms[0]->name;
    echo get_term_link( $terms[0] );
}

相关推荐

WooCommerce WooCommerce_Breadcrumb_Defaults筛选器

我刚刚挣扎了几个小时,试图处理woocommerce的面包屑,我只是看到,正常的功能是不起作用的。。add_filter( \'woocommerce_breadcrumb_defaults\', \'custom_breadcrumb\'); function custom_breadcrumb() { return array( \'delimiter\' => \'<li class=\"mx-2 text-gray-500\