我创建了一个函数,该函数添加了一个管理面板区域,其中包含一个作为变量提取的字段。
这个想法是让我的客户决定哪些类别将从搜索结果中排除。
我发现了这个伟大的代码:
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;
}
根据我们的评论讨论,您似乎得到了一个选项,如:
"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;
}