使用WP_Query在wordpress搜索中查询日期

时间:2017-12-01 04:40:38

标签: php wordpress

我想根据this文章使用WP_Query构建高级WordPress搜索。

我使用短代码来构建表单搜索。

AsyncTask

然后注册自定义查询变量

 function sm_setup() {
    add_shortcode( 'sm_search_form', 'sm_search_form' );
}add_action('init','sm_setup');

我根据以下几个条件构建自定义查询:

function sm_register_query_vars( $vars ) {
    $vars[] = 'cat';
    $vars[] = 'timestart';
    $vars[] = 'timeend';
    return $vars;
}
add_filter( 'query_vars', 'sm_register_query_vars' );

最后搜索表格

function sm_pre_get_posts( $query ) {
    // check if the user is requesting an admin page
    // or current query is not the main query
    if ( is_admin() || ! $query->is_main_query() ){
        return;
    }
    // edit the query only when post type is 'accommodation'
    // if it isn't, return
    if ( !is_post_type_archive( 'post' ) ){
        return;
    }
    $date_query = array();
    // get query var values
    // defaults to empty string
    if( !empty( get_query_var( 'cat' ) ) ){
        $query->set( 'cat', get_query_var( 'cat' ) );
    }


     // get date query var values

  $date_query[] = array( 'after' => get_query_var( 'timestart') ,'inclusive'=>'true');
  $date_query[] = array( 'before' => get_query_var( 'timeend'),'inclusive'=>'true');

    $date_query['relation'] = 'AND';

        $query->set( 'date_query', $date_query );
}
add_action( 'pre_get_posts', 'sm_pre_get_posts', 1 );

我的问题是date_query!当我想要自定义日期。搜索剂量不起作用!并显示所有帖子。

我在哪里犯错?

1 个答案:

答案 0 :(得分:0)

这里使用date_query是错误的: '包容性'应该在内部数组之外。如果比较列是默认值,则前后可以在同一个数组中:

Full -08:00 PM

Diff - 02:00 PM

Diff - 05:00 PM 

确保get_query_var值正确。请查看此处的语法:https://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters

f.e。在查询之前打印它们。 echo get_query_var('timestart'); - 看看它们是否正确显示。