Php Wordpress->;仅显示第二级类别

Php Wordpress->;仅显示第二级类别,php,wordpress,post,Php,Wordpress,Post,我想在查看单个帖子时排除顶级和3+级帖子类别。摆脱顶级是没有问题的,但不知道我会如何着手删除3+级。有人能解释一下如何处理这个问题吗 这就是我现在拥有的: $categories = get_the_terms( $post->ID, 'category' ); // now you can view your category in array: // using var_dump( $categories ); // or you can take all with foreach:

我想在查看单个帖子时排除顶级和3+级帖子类别。摆脱顶级是没有问题的,但不知道我会如何着手删除3+级。有人能解释一下如何处理这个问题吗

这就是我现在拥有的:

$categories = get_the_terms( $post->ID, 'category' );
// now you can view your category in array:
// using var_dump( $categories );
// or you can take all with foreach:
foreach( $categories as $category ) {
    var_dump($category);
    if($category->parent) echo $category->term_id . ', ' . $category->slug . ', ' . $category->name . '<br />';
}
$categories=获取术语($post->ID,'categories');
//现在,您可以在阵列中查看您的类别:
//使用var_dump($categories);
//或者您可以使用foreach随身携带:
foreach($categories作为$category){
var_dump($类别);
如果($category->parent)回显$category->term_id.,'.$category->slug.,'.$category->name.'
; }
要获得第二个级别,您需要运行两个循环—一个用于标识顶级的id,这样您就可以标识具有顶级父id的类别(这意味着它是第二个级别)

$categories=获取术语($post->ID,'categories');
//设置阵列以存储顶级ID
$top_level_id=[];
//循环的唯一目的是计算出最高级别的ID
foreach($categories作为$category){
如果(!$category->parent){
$top\u level\u id[]=$category->term\u id;
}
}
//现在我们可以再次循环,并且只有输出术语的父项在顶级id中(又名,二级类别)
foreach($categories作为$category){
//仅当父级id为顶级id时才输出
if(在数组中($category->parent\u id,$top\u level\u id)){
echo$category->term_id.,'.$category->slug.,'.$category->name.'
; } }
好的,这很有道理。跟踪顶级ID并使用该数据评估。。。好主意。谢谢你的洞察力!
$categories = get_the_terms( $post->ID, 'category' );

// Set up our array to store our top level ID's
$top_level_ids = [];
// Loop for the sole purpose of figuring out the top_level_ids
foreach( $categories as $category ) {
    if( ! $category->parent ) {
        $top_level_ids[] = $category->term_id;
    }
}

// Now we can loop again, and ONLY output terms who's parent are in the top-level id's (aka, second-level categories)
foreach( $categories as $category ) {
    // Only output if the parent_id is a TOP level id
    if( in_array( $category->parent_id, $top_level_ids )) {
        echo $category->term_id . ', ' . $category->slug . ', ' . $category->name . '<br />';
    }
}