我需要在我的主题中修改搜索查询以添加date_query
根据表单选择中的选项值,使用“after”参数。
以下是我目前得到的信息:
“我的选择”窗体内部如下所示:
<select class="select-date" id="select-date">
<option value="5">For the whole time</option>
<option value="1">For one day</option>
<option value="2">For 3 days</option>
<option value="3">For week</option>
<option value="4">For month</option>
</select>
值必须根据帖子发布的日期筛选内容。例如,选择值3为我们提供上周发布的帖子。
然后,我得到一些代码来从selected中获取值,并在查询中更改“after”参数的条件。下面是它的样子
<?php
$dato_query = array();
$date_z = $_GET[\'select-date\'];
if ($date_z == \'1\'){
$dato_query[\'after\'] = \'1 day ago\';
}
elseif ($date_z == \'2\'){
$dato_query[\'after\'] = \'3 days ago\';
}
elseif($date_z == \'3\') {
$dato_query[\'after\'] = \'1 week ago\';
}
elseif ($date_z == \'4\'){
$dato_query[\'after\'] = \'1 month ago\';
}
else {
$dato_query[\'after\'] = \'5 years ago\';
}
$dato_query = apply_filters( \'jm_job_search_data_query\', $dato_query, $REQUEST );
if( !empty( $dato_query ) ) {
$dato_query[\'relation\'] = \'AND\';
if( is_object( $query ) && get_class( $query ) == \'WP_Query\' ) {
$query->date_query->queries = $dato_query;
$query->query_vars[\'date_query\'][] = $query->date_query->queries;
} elseif( is_array( $query ) ) {
$query[\'date_query\'] = $dato_query;
}
}
?>
在那之后,我只得到了其他州的结果:-5年前。
所以date_query
添加到我的搜索查询中,但它不依赖于选择选项。
我希望有人能帮助我。对不起,英语不好。
最合适的回答,由SO网友:Johansson 整理而成
既然您的代码返回了5年前的帖子,那么我假设您的问题在于条件,因为它们都没有运行。
如果要在后端获取表单元素的值,则表单元素必须具有名称。您的select缺少名称,您正试图使用其ID获取其值。您应该这样使用它:
<select class="select-date" name="select-date" id="select-date">
...
</select>
现在您可以访问
$_GET[\'select-date\']
在服务器上。