Date_query problems

时间:2017-08-07 作者:Andrey Vasilkovsky

我需要在我的主题中修改搜索查询以添加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 添加到我的搜索查询中,但它不依赖于选择选项。

我希望有人能帮助我。对不起,英语不好。

1 个回复
最合适的回答,由SO网友:Johansson 整理而成

既然您的代码返回了5年前的帖子,那么我假设您的问题在于条件,因为它们都没有运行。

如果要在后端获取表单元素的值,则表单元素必须具有名称。您的select缺少名称,您正试图使用其ID获取其值。您应该这样使用它:

<select class="select-date" name="select-date" id="select-date">
...
</select>
现在您可以访问$_GET[\'select-date\'] 在服务器上。

结束

相关推荐

Custom search results

我有一个Wordpress自定义搜索表单,用于搜索各种建筑的楼层。例如,当用户搜索1000到1500平方英尺之间的楼层时,他将获得所有在这些值之间具有自由楼层空间的建筑的列表。搜索值存储在Cookie中,因为我需要它们出现在单体建筑页面上。在“single building”页面上,有一个部分显示符合用户搜索条件的楼层。它与我不久前添加的地板配合得很好。当我添加新楼层时,它们不会显示在单体建筑页面上那会是什么?以下是我编写的代码,用于将匹配的楼层显示到单个建筑页面:<table class=\"ta