WordPress多个帖子列表过滤器 [英] Wordpress multiple post list filters

查看:251
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆