Wordpress pre_get_posts和date_query

时间:2014-08-19 09:26:28

标签: php wordpress

我正在尝试使用pre_get_posts挂钩更改年度存档结果,以便它显示我在学年的帖子。我正在使用Wordpress版本3.9.2。

function get_posts_by_academic_year($query) {
    if ($query->is_main_query() && $query->is_year()) {
            $query->set('date_query', array(
                array(
                    'after' => array(
                            'year' => $year
                            , 'month' => 9
                            , 'day' => 1
                        ),
                    'before' => array(
                            'year'  => $year+1
                            , 'month' => 8
                            , 'day'   => 31
                        ),
                    'inclusive' => true
                ),
            )
        );
    }
}
add_action('pre_get_posts', 'get_posts_by_academic_year');

我得到的只是一个404页面,没有任何错误可以帮我调试。当谈到Wordpress时,你不得不原谅我的无知,我不经常使用它。关于我做错了什么或者是否有更好的方法来做这个的任何想法?

2 个答案:

答案 0 :(得分:0)

您可以尝试以下

if (!is_admin() && $query->is_main_query() && $query->is_year() && $query->is_archive()) {

答案 1 :(得分:0)

原因是你的$ year变量是空的......

从传递给函数的$ query变量填充它...

$ year = get_query_var('year');

由于某些原因,当查询返回零结果时,我得到404页面错误...而不是查询出现问题。