簡體   English   中英

WordPress多個帖子列表過濾器

[英]Wordpress multiple post list filters

我的帖子列表中有多個過濾器。 我使過濾器像這樣工作:

    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個過濾器(位置和位置)正在工作,但分別工作。 如果我嘗試按位置和位置進行過濾,則僅按似乎是最后一個查詢(位置)的內容進行過濾。 如何使我的查詢考慮每個過濾器?

$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

我這樣做是這樣的:

 function wpr_manager_filter($query) { global $pagenow; global $typenow; $current_page = isset( $_GET['post_type'] ) ? $_GET['post_type'] : ''; if ( is_admin() && 'properties' == $typenow && 'edit.php' == $pagenow ) { $queryParamsCounter = 0; if (isset( $_GET['city-filter'] ) && $_GET['city-filter'] != '-1') { $cityId = (int)$_GET['city-filter']; $queryParamsCounter++; } if (isset( $_GET['visibility-filter'] ) && $_GET['visibility-filter'] != '-1') { $queryParamsCounter++; $visibility = (int)$_GET['visibility-filter']; } $meta_query = array(); if ($queryParamsCounter > 1) { $meta_query['relation'] = 'AND'; } if (isset($cityId)) { $meta_query[] = array( 'key' => 'city', 'value' => $cityId, 'compare' => '=', 'type' => 'NUMERIC', ); } if (isset($visibility)) { $meta_query[] = array( 'key' => 'visibility', 'value' => $visibility, 'compare' => '=', 'type' => 'NUMERIC', ); } $query->set( 'meta_query', $meta_query); } } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM