有没有办法可以使用条件来检查页面是否是特定类别的子类别?
即:在我的'category.php'上,我目前有:
<?php } else if (is_category( 'blog' )) { ?>
这是根据用户所在的类别页面呈现不同的视图。
是否可以做类似的事情?
<?php } else if (is_sub_category_of( 'blog' )) { ?>
答案 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 */ }
此代码将执行您描述的功能。