尝试显示特定日期范围的我的自定义帖子类型。我只想显示某个月份内的帖子。我知道我需要连接 posts_where 过滤器,但我不知道如何将参数传递给这个函数,因为我需要传递日期范围。
我见过很多关于如何更改 WHERE 子句以获取日期范围的示例,但仅限于静态情况。我需要执行以下操作:
add_filter('posts_where', 'my_custom_where', '', '04/2011'); //pass my date to the filter
function my_custom_where( $where = '' ) {
//figure range
$range = array(
'start' => $date . '-1',
'end' => $date . '-' . cal_days_in_month(CAL_GREGORIAN, date('m', $date), date('Y', $date))
);
$where .= " AND post_date ....."; //build where with date range
return $where;
}
希望这是有道理的。任何帮助,将不胜感激。
如果您诉诸全局变量,您可以使其动态。(不理想,但是嘿,我还没有找到更干净的方法...)
首先为日期定义一个全局变量
$GLOBALS['start_date'] = '2011-07-31';
然后添加你的过滤器
add_filter( 'posts_where', 'filter_where' );
function filter_where( $date, $where = '' ) {
// posts later than dynamic date
$where .= " AND post_date >= '" . date('Y-m-d H:i:s', strtotime($GLOBALS['start_date'])) . "'";
return $where;
}
如果您只想针对单个查询运行过滤器,则删除过滤器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)