我们有搜索页面,即使用标准全局$ 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_querywp_reset_query()
我可以在里面重写全局$ wp_query并将每个帖子的日期与我的日期进行比较,如果不匹配则取消设置帖子。但我很害羞,这不是我想做的事情的正确方法。
我做错了什么?
答案 0 :(得分:0)
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 );