首先为日期定义一个全局变量$GLOBALS['start_date'] = '2011-07-31';然后添加过滤器add_filter('posts_where', 'filter_where');函数 filter_where( $date, $where = '' ) {//晚于动态日期的帖子$where .= " AND post_date >='" .date('Y-m-d H:i:s', strtotime($GLOBALS['start_date'])) ."'";返回 $where;}如果您只想为单个查询运行过滤器,请删除过滤器.Trying to display my custom post types for specific date ranges. I want to show posts only within a certain month. I know I need to hook into the posts_where filter, but I can not figure out how to pass arguments to this function, as I need to pass the date range.I have seen plenty of examples of how to alter the WHERE clause to take a date range, but only when static. I need to do the following:add_filter('posts_where', 'my_custom_where', '', '04/2011'); //pass my date to the filterfunction 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;}Hope that makes sense. Any help would be appreciated. 解决方案 You can make it dynamic if you resort to global variables.(Not ideal, but hey, I haven't found a cleaner way...)First define a global variable for the date$GLOBALS['start_date'] = '2011-07-31';then add your filteradd_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;}Then remove the filter if you just want to run that for a single query. 这篇关于显示特定日期范围之间的帖子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!