Wordpress - 分层次获取帖子的分类

时间:2016-01-18 09:31:23

标签: hierarchy custom-post-type taxonomy custom-taxonomy

我想从层次上获得一个帖子(循环)的所有分类。示例I包含这些分类法,以及括号中的税号。

Tax1(1)
-Tax2(3)
--Tax3(2)

我想按照这个顺序在一个数组中收集它们。现在我设法获得这些3的数组,但顺序错了。我无法通过ID订购,因为ID最初没有订购。我也不能通过名字和slu it命令它。 (我目前的分类法名称不是Tax1,Tax2 ......)

我目前的代码是

$args = array('orderby' => 'term_order', 'order' => 'ASC', 'fields' => 'all');
$productcategories = wp_get_object_terms($post->ID, 'guide_type', $args);

2 个答案:

答案 0 :(得分:2)

使用" Wordpress" Walker 类,用于创建分类法的层次结构

<?php
class Walker_Quickstart extends Walker {

    // Tell Walker where to inherit it's parent and id values
    var $db_fields = array(
        'parent' => 'parent', 
        'id'     => 'term_id' 
    );

    /**
     * At the start of each element, output a <p> tag structure.
     */
    function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
        $output .= sprintf( "\n<p>%s %s (%s)</p>\n",
            str_repeat('&dash;', $depth),
            $item->name,
            $item->term_id            
        );
    }

}?>

此类将创建元素层次结构。将此类与返回的元素一起使用,如下所示:

$args = array('orderby' => 'term_order', 'order' => 'ASC', 'fields' => 'all');
$productcategories = wp_get_object_terms($post->ID, 'guide_type', $args);
$walk = new Walker_Quickstart();
echo $walk->walk($productcategories, 0);

答案 1 :(得分:0)

即将获得我所做的这个功能,但是Vikash Kumar给了我一个更好的答案,谢谢!

function get_term_top_most_parent($post_id, $taxonomy){
    $return = array();
    $registeredcat = 0;
    $newparent = '';


    $catcount = 0;
    $firstlevels = wp_get_object_terms( $post_id, $taxonomy); //post id, taxo, args
    foreach ($firstlevels as $key => $value){
        if($value->parent == 0 ){
            //$firstlevel = $value->term_id; //23
            $newparent = $value->term_id;
            array_push($return, $value);
            $registeredcat += 1;
        }
        $catcount += 1;
    }
return $return;
}