我在函数中创建了一个自定义函数。php检查post\\u是否在\\u substant\\u类别中,我通过一个插件控制它,该插件返回true is a post is in substant类别,it is working well
But it\'s not working in my home.php, 奇怪的是,当我检查家中任何帖子的post\\u是否在\\u genderant\\u类别中时。php结果保持为true
I want to know the reason for that and how to fix it
post\\u的我的代码是\\u子体\\u类别中的\\u
if ( ! function_exists( \'post_is_in_descendant_category\' ) ) {
function post_is_in_descendant_category( $cats, $_post = null ) {
foreach ( (array) $cats as $cat ) {
// get_term_children() accepts integer ID only
$descendants = get_term_children( (int) $cat, \'category\' );
if ( $descendants && in_category( $descendants, $_post ) )
return true;
}
return false;
}
}
我的插件代码:
function check_category(){
global $rtlDir;
if ( $category_to_check = get_term_by( \'slug\', \'category-3\', \'category\' )){
if(post_is_in_descendant_category($category_to_check->term_id)){
$rtlDir = true;
}else{
$rtlDir = false;
}
}
}
add_filter("wp","check_category");
SO网友:gmazzap
home.php
是帖子的存档,当您查看时home.php
和插件运行中的函数,(在“wp”挂钩上)有no 当前职位。
那么函数post_is_in_descendant_category
呼叫in_category($descendants, null)
那个can never return true 如果没有当前职位。
因此,您应该在上运行插件函数\'the_post\'
动作挂钩,如果您希望它对存档中的每个帖子都运行,例如:
add_filter("the_post", "check_category");
function check_category($post) {
// here your code
global $rtlDir;
if ( $category_to_check = get_term_by( \'slug\', \'category-3\', \'category\' ) ){
if( post_is_in_descendant_category($category_to_check->term_id, $post) ){
$rtlDir = true;
} else {
$rtlDir = false;
}
}
}
这应该可以,但似乎不是一个好的解决方案:这会为每个帖子运行额外的db查询。。。
如果您解释运行此代码的原因,并且您想要获得的可能是找到一个性能更好的解决方案。