Wordpress - 分层获取 post 的分类法
Wordpress - Get the taxonomy of a post hierarchically
我想按层次获取一个post(在一个循环中)的所有分类法。示例我有那些分类法,括号中的税号。
Tax1(1)
-Tax2(3)
--Tax3(2)
我想按这个顺序收集它们,也许在一个数组中。现在我设法得到了这 3 个数组,但顺序是错误的。我不能按 ID 订购,因为 ID 最初没有订购。我也不能按名称和 slug 来订购它。 (我当前的分类名称不是 Tax1、Tax2...)
我现在的密码是
$args = array('orderby' => 'term_order', 'order' => 'ASC', 'fields' => 'all');
$productcategories = wp_get_object_terms($post->ID, 'guide_type', $args);
使用"Wordpress"Walkerclass创建分类的层次结构
<?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('‐', $depth),
$item->name,
$item->term_id
);
}
}?>
这 class 将创建元素的层次结构。将此 class 与您返回的元素一起使用,如下所示:
$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);
本来想用我做的这个函数得到一些东西,但是 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;
}
我想按层次获取一个post(在一个循环中)的所有分类法。示例我有那些分类法,括号中的税号。
Tax1(1)
-Tax2(3)
--Tax3(2)
我想按这个顺序收集它们,也许在一个数组中。现在我设法得到了这 3 个数组,但顺序是错误的。我不能按 ID 订购,因为 ID 最初没有订购。我也不能按名称和 slug 来订购它。 (我当前的分类名称不是 Tax1、Tax2...)
我现在的密码是
$args = array('orderby' => 'term_order', 'order' => 'ASC', 'fields' => 'all');
$productcategories = wp_get_object_terms($post->ID, 'guide_type', $args);
使用"Wordpress"Walkerclass创建分类的层次结构
<?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('‐', $depth),
$item->name,
$item->term_id
);
}
}?>
这 class 将创建元素的层次结构。将此 class 与您返回的元素一起使用,如下所示:
$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);
本来想用我做的这个函数得到一些东西,但是 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;
}