我有一篇帖子,其中为CPT归档页面设置了过滤器。这很好,但我在侧栏中有其他WP\\U查询对象不起作用,因为post\\U where过滤器也会影响这些对象。如何使过滤器只在主页上工作而不在侧边栏上工作?
add_filter(\'posts_where\', \'Where_Events\', 10, 1);
function Where_Events($where)
{
global $wpdb;
$current_date = new DateTime(\'now\');
$current_month = $current_date->format(\'m\');
$current_year = $current_date->format(\'Y\');
$query_month = get_query_var( \'eventMonth\', $current_month );
$query_year = get_query_var( \'eventYear\', $current_year );
$query_day = \'01\';
$query_date = $query_year .\'-\'. $query_month . \'-\' . $query_day;
// check date where function
//default return current month
if (! is_admin() && (is_post_type_archive(\'gnl_events\') && is_main_query())) {
$where .= \' AND MONTH(events_occurence) = MONTH("\'.$query_date.\'")\';
$where .= \' AND YEAR(events_occurence) = YEAR("\'.$query_date.\'")\';
}
return $where;
}
最合适的回答,由SO网友:MikeNGarrett 整理而成
这里的第二个参数有助于确定适当的上下文。
add_filter( \'posts_where\', \'Where_Events\', 10, 2 );
function Where_Events( $where, $wp_query ) { }
全球
$wp_query
可以通过检查来告诉您该查询是否用于主查询
$wp_query->is_main_query()
.