自定义分类的分层显示

时间:2016-10-31 作者:Adam Vorkel

我正在创建一个属性主题,并为自定义帖子类型“property”注册了一个层次分类法“property\\u location”。每个物业将通过该税分配一个位置,该税可能以分层方式有一个或多个家长。因此,例如,如果我将“Springs”的位置术语指定给一个属性,这是“Gauteng”的子术语,它应该给我

Springs, Gauteng
如果豪登语恰巧是“南非”的一个儿童词,它应该给我

Springs, Gauteng, South Africa
但如果我只指定“豪登”一词(假设它是“南非”一词的子词,它应该给我

Gauteng, South Africa
因此,我的问题是,我如何编写一个足够聪明的函数,以找到分配给属性的最低级别位置项,并将其父项按顺序排列?是否有任何Wordpress功能可以帮助您?

1 个回复
SO网友:Dave Romsey

这个wpse244577_list_terms() 以下功能使用wp_list_categories() 若要执行重载,请修改结果,使术语与层次结构的顺序相反。

将此代码放在插件或主题函数中。php文件:

/**
 * Lists term links for a taxonomy in reverse order of hierarchy
 * 
 * Based on https://developer.wordpress.org/reference/functions/wp_list_categories/#comment-1169    
 * @param $taxonomy string taxonomy name
 * @param $separator string separator for terms
 */
function wpse244577_list_terms( $taxonomy, $separator = \', \' ) {        

    // Get the term IDs assigned to post.
    $post_terms = wp_get_object_terms( get_the_ID(), $taxonomy, [ \'fields\' => \'ids\' ] );

    if ( ! empty( $post_terms ) && ! is_wp_error( $post_terms ) ) {

        $terms = wp_list_categories( [
                \'title_li\'  => \'\',
                \'style\'     => \'none\',
                \'echo\'      => false,
                \'taxonomy\'  => $taxonomy,
                \'include\'   => $post_terms,
                \'separator\' => $separator,
        ] );

        $terms = rtrim( trim( str_replace( $separator, $separator, $terms ) ), \', \' );
        $terms = explode( $separator, $terms );
        $terms = array_reverse( $terms );
        $terms = implode( $separator, $terms );

        echo  $terms;
    }
}
要使用该函数,请在主题的循环中调用它,并将所需的分类名称作为第一个参数传递:

wpse244577_list_terms( \'property_location\' );

相关推荐

ACF Taxonomy in Loop

你好吗我的问题是,我在头版上显示了一些卡片,例如名称和描述,这些信息来自我的分类法event,因为我用ACF创建了一些字段,我想在卡片中打印它们,但我不知道怎么做。下面是我如何打印卡片的代码 <?php if(is_front_page()): $terms = get_terms( [ \'taxonomy\' => \'evento\', \'hide_empty\' =>