按层次结构顺序获取术语列表

时间:2014-12-12 作者:wpuser

    function btp_entry_capture_categories() {
        $out = \'\';

        global $post;

        $taxonomies = get_object_taxonomies( $post );

        foreach ( $taxonomies as $taxonomy ) {  
            $taxonomy = get_taxonomy( $taxonomy );  
            if ( $taxonomy->query_var && $taxonomy->hierarchical ) {

                $out .= \'<div class="entry-categories">\';
                    $out .= \'<h6>\' . $taxonomy->labels->name . \'</h6>\';
                    $out .= get_the_term_list( $post->ID, $taxonomy->name, \'<ul><li>\', \'</li><li>\', \' › </li></ul>\' );
                $out .= \'</div>\';
            }
        }

        return $out;
    }
我正在尝试按层次结构输出类别列表排序,是否可以使用我的代码?最好的方法是什么?

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

get_the_term_list() 在这里不起作用。最好使用的功能是wp_get_post_terms()

根据以下假设,这是可行的

如果帖子只属于一位家长、一个孩子和/或一个孙子,您可以通过以下方式订购条款term_id.

人们普遍认为,父母的ID编号比孩子的低,孩子的ID编号比孙子的低

有了这些信息,您可以在代码中获得如下帖子条款

wp_get_post_terms( $post->ID, $taxonomy->name, array( \'orderby\' => \'term_id\' ) );
但正如我所说,你需要让你的帖子在同一棵树上只有一位家长、一个孩子和一个孙子

EDIT

你可以试试这样的。您只需要自己添加HTML标记

function btp_entry_capture_categories() {
    $out = \'\';

    global $post;

    $taxonomies = get_object_taxonomies( $post );

    foreach ( $taxonomies as $taxonomy ) {  
        $taxonomy = get_taxonomy( $taxonomy );  
        if ( $taxonomy->query_var && $taxonomy->hierarchical ) {

            $out .= \'<div class="entry-categories">\';
                $out .= \'<h6>\' . $taxonomy->labels->name . \'</h6>\';

                $terms = wp_get_post_terms( $post->ID, $taxonomy->name, array( \'orderby\' => \'term_id\' ) );
                foreach ( $terms as $term ) {

                    $out .= $term->name;

                }
            $out .= \'</div>\';
        }
    }

    return $out;
}

结束