您可以使用匿名函数,如this blog post, 它利用为posts_where
过滤器:
$options = array(
\'max_post_age\' => \'30 days\'
);
$age_filter = function ($where = \'\') use ( $options ) {
$where .= " AND post_date > \'" . date( \'Y-m-d\', strtotime( \'-\' . $options[ \'max_post_age\' ] ) ) . "\'";
return $where;
};
add_filter(\'posts_where\', $age_filter);
$query = new WP_Query($args);
remove_filter(\'posts_where\', $age_filter);
作者确实在单个表达式中实现了这一点,但在大多数情况下,使用匿名函数应该可以完美地工作。
值得注意的是,Wordpress 3.7将有一组新的very handy date parameters 添加到WP_Query
.
EDIT: 正如我昨晚发现的,Lambda函数(即。function ($where = \'\') use ( $options )
) 仅在中可用PHP 5.3+.