我创建了一个功能,可以添加一个管理面板区域,其中包含一个被拉为变量的字段。
这个想法是允许我的客户决定从搜索结果中排除哪些类别。
我找到了这个很棒的代码:
add_filter( 'pre_get_posts' , 'search_exc_cats' );
function search_exc_cats( $query ) {
if( $query->is_admin )
return $query;
if( $query->is_search ) {
$query->set( 'category__not_in' , array(1,64) ); // Example multiple cats
}
return $query;
}
什么行得很好,并添加了我的代码,以便在其上方提供可靠的代码:
$omr_tracking_code = get_option('omr_tracking_code');
但是当我尝试将变量$omr_tracking_code
放在"数组"中时,它不起作用。
这是我的完整代码,它不起作用:
$omr_tracking_code = get_option('omr_tracking_code');
add_filter( 'pre_get_posts' , 'search_exc_cats' );
function search_exc_cats( $query ) {
if( $query->is_admin )
return $query;
if( $query->is_search ) {
$query->set( 'category__not_in' , array($omr_tracking_code) ); // Example multiple cats
}
return $query;
}
答案 0 :(得分:0)
根据我们的评论讨论,您似乎回到了以下选项:
"1, 64"
然后你正在尝试:
array ("1, 64")
哪个不起作用。
你需要这样做:
array("1", "64")
因此,首先使用选项1尝试下面的代码。如果这不起作用,则option2也会将值转换为整数(可能需要也可能不需要):
array(1, 64)
请尝试以下两个选项之一:
function search_exc_cats( $query ) {
if( $query->is_admin )
return $query;
if( $query->is_search ) {
$option1 = explode(',', $omr_tracking_code);
$option2 = array_map('intval', explode(',', $omr_tracking_code));
$query->set( 'category__not_in' , $option1 );
}
return $query;
}