根据您希望帖子显示的位置,解决方案会有所不同。如果要筛选主主页,此解决方案将执行以下操作:
/**
* Conditionally add a posts_where filter based on the current query
*
* @param object $query
* @return void
*/
function wpse_53599_24h_pre_get_posts( $query ) {
if ( is_admin() || ! $query->is_main_query() || ! $query->is_home() )
return;
add_filter( \'posts_where\', \'wpse_53599_filter_last_24h\' );
}
add_action( \'pre_get_posts\', \'wpse_53599_24h_pre_get_posts\' );
/**
* Add a clause to posts_where to restrict posts to the last 24h
*
* @param string $where
* @return string
*/
function wpse_53599_filter_last_24h( $where = \'\' ) {
$where .= " AND post_date >= \'" . date( \'Y-m-d H:i:s\', time() - DAY_IN_SECONDS ) . "\'";
remove_filter( \'posts_where\', \'wpse_53599_filter_last_24h\' );
return $where;
}
请注意,我们删除了过滤器,因为我们不想限制站点上运行的每个帖子查询。只有我们的相关人员。
如果要筛选主主主查询以外的查询,只需在pre_get_posts
作用
如果要筛选子查询,则只需添加posts_where
在实例化WP\\U查询之前进行筛选,然后立即将其删除,并跳过pre_get_posts
一点