如何检查Wordpress中的类别x的子类别?

时间:2012-11-07 13:48:40

标签: wordpress categories

有没有办法可以使用条件来检查页面是否是特定类别的子类别?

即:在我的'category.php'上,我目前有:

 <?php } else if (is_category( 'blog' )) { ?>

这是根据用户所在的类别页面呈现不同的视图。

是否可以做类似的事情?

 <?php } else if (is_sub_category_of( 'blog' )) { ?>

3 个答案:

答案 0 :(得分:2)

虽然很老,但我已经创造了完美的解决方案。

将其添加到您的functions.php文件中:

/** check if the current category is a child of a given category **/
function current_cat_is_sub_of($parent = ''){
    global $wp_query;
    $cat = $wp_query->get_queried_object();

    if ( ! isset( $wp_query ) ) {
        _doing_it_wrong( __FUNCTION__, __( 'Conditional query tags do not work before the query is run. Before then, they always return false.' ), '3.1.0' );
        return false;
    }
    elseif( $cat->parent!=0 && $cat->parent == $parent ){
        return true;
    }
    else{
        return false;
    }
}

然后你可以用各种方式。例如,更改给定类别下所有子类别页面中帖子的显示顺序:

/** order posts under category 123 from new to old **/
function order_digital_posts($query){
    if (current_cat_is_sub_of('THE PARENT CATEGORY ID') && $query->is_main_query()) {
        $query->set( 'order', 'ASC' );
    }
}
add_action('pre_get_posts', 'order_digital_posts');

享受! 伊塔马尔

答案 1 :(得分:1)

老问题,但昨晚我偶然发现了这件事,我不得不为自己找到答案。

这是在我的category.php页面上:

$category = get_the_category();

if(isset($category[1]) && $category[1]->slug === 'catagory-you-want') {

    // Do stuff if it's a child of "Category You Want"
    // You can use $category[1]->cat_ID to check which category instead

}

当前子类别位于$category位置0

如果“您想要的类别”具有父类别并且您不知道它,那将更难。

答案 2 :(得分:0)

您可以查看当前类别的父ID是否与“博客”类别ID匹配。如果是这样,您当前的类别是“博客”的子类别。

$current_cat = get_query_var("category");
$cat = get_term_by('slug',$current_cat,"category");
$blog = get_term_by('slug',"blog","category");


if($cat->parent == $blog->ID){ /*your code */ }

此代码将执行您描述的功能。