这个问题只适用于创世纪框架。
我有一个名为“新闻”的类别。在我的“新闻”类别页面上,我只想显示过去 30 天内发布的帖子。
这是我开始使用的代码:
<?php
remove_action('genesis_loop', 'genesis_do_loop');
add_action('genesis_loop', 'pm_recent_news_loop');
function pm_last_name_loop() {
global $query_args;
$args = (array(
//????
));
genesis_custom_loop( wp_parse_args($query_args, $args) );
}
genesis();
在一般的 WordPress API 文档中,它基本上说您无法通过将参数传递给 $query_args 来实现按日期范围过滤(这是 genesis_custom_loop 完成它的方式。相反,似乎正确的方法是add_filter('posts_where', 'my_where_filter') 然后通过 post_date 定义 where 子句。参考: http ://codex.wordpress.org/Class_Reference/WP_Query#Parameters 。
但是我无法让它工作。当我尝试实现类似于 codex 中描述的代码时,我要么没有收到任何帖子,要么收到所有帖子。我认为这是因为 Genesis 以某种方式围绕 posts_where 过滤器工作,或者以不被调用的方式包装它。