繁体   English   中英

如何在wordpress中的搜索页面上设置wp_query

[英]How to set wp_query on search page in wordpress

我们有搜索页面,即使用标准全局$ wp_query并从$ _GET中获取s和category_name等参数。

我想在搜索页面的wp_query中添加一些参数。 但比$ _GET中传递的参数更复杂。

这就是我尝试创建新的WP_Query的原因

$args = array(
'date_query' => array(
    array(
        'hour'      => 9,
        'compare'   => '>=',
    ),
    array(
        'hour'      => 17,
        'compare'   => '<=',
    ),
    array(
        'dayofweek' => array( 2, 6 ),
        'compare'   => 'BETWEEN',
    ),
),
'posts_per_page' => -1,
);

$new_query = new WP_Query($args);

并取得成果

<?php while ($new_query->have_posts()) : $new_query->the_post(); ?>

但它不起作用。 即使重置全局$ wp_query

wp_reset_query()

我可以在里面重写全局$ wp_query并将每个帖子的日期与我的日期进行比较,如果不匹配则取消设置帖子。 但我很害羞,这不是我想做的事情的正确方法。

我做错了什么?

function search_pre_get_posts( $query ) {
    if(is_search()){
        if(empty($_GET['before'])){$before = '01.01.2050';}else{$before = $_GET['before'];}
        if(empty($_GET['after'])){$after = '01.01.2000';}else{$after = $_GET['after'];}

        $query->set('date_query', array(
            '0' => array(
                'after' => $after,
                'before' => $before,
                'inclusive' => true
            )
        ));
    }
}
add_action( 'pre_get_posts', 'search_pre_get_posts', 1 );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM