有没有办法可以使用条件检查页面是否是特定类别的子类别?
即:在我的“category.php”上,我目前有:
<?php } else if (is_category( 'blog' )) { ?>
这是为了根据用户所在的类别页面呈现不同的视图。
有可能做类似的事情吗?
<?php } else if (is_sub_category_of( 'blog' )) { ?>
有没有办法可以使用条件检查页面是否是特定类别的子类别?
即:在我的“category.php”上,我目前有:
<?php } else if (is_category( 'blog' )) { ?>
这是为了根据用户所在的类别页面呈现不同的视图。
有可能做类似的事情吗?
<?php } else if (is_sub_category_of( 'blog' )) { ?>
虽然很老,但我已经创建了完美的解决方案。
将此添加到您的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');
享受!伊塔马尔
老问题,但我昨晚偶然发现了这个问题,我不得不为自己找到答案。
这是在我的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
。
如果“您想要的类别”有一个父类别而您不知道,这将更加困难。
您可以查看您当前的类别父 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 */ }
此代码将执行您描述的功能。