Php WordPress站点上的筛选复选框不起作用
我有6个ACF字段。 2选择字段 4个复选框字段 若我只过滤选择的字段,过滤工作正常,但若我添加到过滤器参数从复选框,过滤器总是显示0篇文章 有什么问题吗 过滤器的循环代码:Php WordPress站点上的筛选复选框不起作用,php,wordpress,filter,filtering,Php,Wordpress,Filter,Filtering,我有6个ACF字段。 2选择字段 4个复选框字段 若我只过滤选择的字段,过滤工作正常,但若我添加到过滤器参数从复选框,过滤器总是显示0篇文章 有什么问题吗 过滤器的循环代码: <div id="archive-filters" class="form-group"> <?php foreach( $GLOBALS['my_query_filters'] as $key => $name ): $field = get_fie
<div id="archive-filters" class="form-group">
<?php foreach( $GLOBALS['my_query_filters'] as $key => $name ):
$field = get_field_object($key, false, false);
if( isset($_GET[ $name ]) ) {
$field['value'] = explode(',', $_GET[ $name ]);
}
?>
<div class="slider-container filter form-group <?php echo $field['wrapper']['class']; ?>" data-filter="<?php echo $name; ?>">
<span class="main-label"><?php echo $field['label'];?></span>
<label class="switch">
<?php create_field( $field ); ?>
<div class="slider round"></div>
</label>
<?php if ($field['instructions']){ echo '<span class="instructions">' . $field['instructions'] . '</span>';} ?>
</div>
<?php endforeach; ?>
<div class="field col-md-3 col-sm-3 col-xs-6">
<div class="form-group">
<button id="btn-filtering__companies" class="btn btn-success btn-block">Search</button>
</div><!-- /.form-group -->
</div>
</div>
搜寻
和functions.php中的代码
// array of filters (field key => field name)
$GLOBALS['my_query_filters'] = array(
'field_key1' => 'first_meta',
'field_key2' => 'second_meta',
'field_key3' => 'third_meta',
'field_key4' => 'etc...',
'field_key5' => '',
'field_key6' => ''
);
// action
add_action('pre_get_posts', 'my_pre_get_posts', 10, 1);
function my_pre_get_posts( $query ) {
// bail early if is in admin
if( is_admin() ) return;
// bail early if not main query
// - allows custom code / plugins to continue working
if( !$query->is_main_query() ) return;
// get meta query
$meta_query = $query->get('meta_query');
// loop over filters
foreach( $GLOBALS['my_query_filters'] as $key => $name ) {
// continue if not found in url
if( empty($_GET[ $name ]) ) {
continue;
}
// get the value for this filter
// eg: http://www.website.com/events?city=melbourne,sydney
$value = explode(',', $_GET[ $name ]);
$meta_query = array();
// append meta query
$meta_query[] = array(
'key' => $name,
'value' => $value,
'compare' => 'IN',
);
}
// update meta query
$query->set('meta_query', $meta_query);
}
function php_in_widgets($widget_content) {
if (strpos($widget_content, '<' . '?') !== false) {
ob_start();
eval('?' . '>' . $widget_content);
$widget_content = ob_get_contents();
ob_end_clean();
}
return $widget_content;
}
add_filter('widget_text', 'php_in_widgets', 99);
?>
//过滤器数组(字段键=>字段名)
$GLOBALS['my\u query\u filters']=数组(
'field_key1'=>'first_meta',
'field_key2'=>'second_meta',
'field_key3'=>'third_meta',
“field_key4”=>“等…”,
'field_key5'=>',
'field_key6'=>'
);
//行动
添加操作('pre_get_posts','my_pre_get_posts',10,1);
函数my_pre_get_posts($query){
//如果他在行政区,就提前保释
如果(is_admin())返回;
//如果不是主要问题,则提前保释
//-允许自定义代码/插件继续工作
如果(!$query->is_main_query())返回;
//获取元查询
$meta_query=$query->get('meta_query');
//环路滤波器
foreach($GLOBALS['my\u query\u filters']作为$key=>$name){
//如果在url中找不到,请继续
if(空($\u GET[$name])){
继续;
}
//获取此筛选器的值
//例如:http://www.website.com/events?city=melbourne悉尼
$value=explode(“,”,$获取[$name]);
$meta_query=array();
//追加元查询
$meta_query[]=数组(
“key”=>$name,
“值”=>$value,
'比较'=>'中的',
);
}
//更新元查询
$query->set('meta\u query',$meta\u query);
}
函数php\u in\u widgets($widget\u content){
if(strpos($widget\u content,.$widget\u content);
$widget_content=ob_get_contents();
ob_end_clean();
}
返回$widget\u内容;
}
添加过滤器('widget\u text','php\u in\u widgets',99);
?>
现在我正在处理过滤器,通过AND方法选择前2个过滤器,通过OR方法选择复选框进行过滤
如果你能帮我做这件事,我将不胜感激
谢谢大家!