WordPress多个帖子列表过滤器 [英] Wordpress multiple post list filters
本文介绍了WordPress多个帖子列表过滤器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的帖子列表中有多个过滤器.我使过滤器像这样工作:
I have multiple filters in my posts list. i make the filters work like this :
add_filter( 'parse_query','event_table_filter' );
function event_table_filter( $query ){
$type = 'event';
if (isset($_GET['post_type'])) {
$type = $_GET['post_type'];
}
if ( 'event' == $type && is_admin() && isset($_GET['ADMIN_FILTER_FIELD_LOCATION']) && $_GET['ADMIN_FILTER_FIELD_LOCATION'] != '') {
$query->query_vars['meta_key'] = 'location';
$query->query_vars['meta_value'] = $_GET['ADMIN_FILTER_FIELD_LOCATION'];
}
if ( 'event' == $type && is_admin() && isset($_GET['ADMIN_FILTER_FIELD_FEATURED']) && $_GET['ADMIN_FILTER_FIELD_FEATURED'] != '') {
$query->query_vars['meta_key'] = 'position';
$query->query_vars['meta_value'] = $_GET['ADMIN_FILTER_FIELD_FEATURED'];
}
}
现在,我的2个过滤器(位置和位置)正在工作,但分别工作.如果我尝试按位置和位置进行过滤,则仅按似乎是最后一个查询(位置)的内容进行过滤.如何让我的查询考虑每个过滤器?
right now, my 2 filters (location and position) are working but individually. If i try to make a filters by position AND Location, it filtering only by what it seem to be the last query (position). how can i make my query take in consideration every filters?
推荐答案
$args = array(
'post_type' => 'posttypehere',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => '_price',
'value' => array($_POST['p_from'], $_POST['p_to']),
'type' => 'CHAR',
'compare' => 'BETWEEN'
),
array(
'key' => 'somekey',
'value' => array($_POST['p_from'], $_POST['p_to']),
'type' => 'CHAR',
'compare' => 'BETWEEN'
),
array(
'key' => 'anotherkey',
'value' => array($_POST['p_from'], $_POST['p_to']),
'type' => 'CHAR',
'compare' => 'BETWEEN'
),
)
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) :
while ($query->have_posts()) : $query->the_post();
echo $post_id = get_the_ID();
endwhile;
endif;
enter code here
这篇关于WordPress多个帖子列表过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文