在Wordpress上Genesis框架中过滤日期范围
问题描述:
此问题仅适用于Genesis框架。在Wordpress上Genesis框架中过滤日期范围
我有一个名为“新闻”的类别。在我的“新闻”类别页面上,我只想显示过去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实现按日期范围过滤(这是这就是geneis_custom_loop完成它的方式,相反,正确的做法是add_filter('posts_where','my_where_filter'),然后通过post_date定义where子句。当我尝试实现类似于Codex Iteit中所描述的代码时,她没有得到我的帖子,或者我得到了我的所有帖子。我认为这是因为Genesis以某种方式在posts_where过滤器中工作,或者以它不会被调用的方式包装它。
答
尝试添加过滤器代替,一些SQL
filter_daterange($where='') {
$where .= " AND post_date >= '".date('Y-m-d H:i:s', strtotime('-30 days'))."' AND post_date <= '".date('Y-m-d H:i:s')."'";
return $where;
}
您的循环之前添加的过滤器,并随后将其删除
add_filter('posts_where', 'filter_daterange');
genesis_custom_loop(wp_parse_args($query_args, $args));
remove_filter('posts_where', 'filter_daterange');
谢谢,这是我终于得到后在结算方法之前没有回复。这个答案很好地总结了它。 – vlasits 2013-07-27 20:44:35
很高兴帮助你。我不确定这是否适用于创世纪主题。 – 2013-07-28 19:09:10