在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'); 
+0

谢谢,这是我终于得到后在结算方法之前没有回复。这个答案很好地总结了它。 – vlasits 2013-07-27 20:44:35

+0

很高兴帮助你。我不确定这是否适用于创世纪主题。 – 2013-07-28 19:09:10