你要的东西可能很贵。除非运行查询,否则无法检查帖子是否有缩略图。之后,如果将其从已执行的查询中排除,则会影响分页。
您可以做的是运行一次查询(在主查询运行之前),但不要使用它输出任何内容。然后,在该特定查询中搜索没有缩略图的帖子,将其ID保存到数组中,并将其从主查询中排除。
add_action( \'pre_get_posts\', \'exclude_no_thumbnails\' );
function exclude_no_thumbnails( $query ) {
// Check if we are on the main query
if (!is_admin() && ( $query->is_main_query() && $query->is_archive() ) ){
remove_action( \'pre_get_posts\', \'exclude_no_thumbnails\' );
// Get a list of the posts in the query
$posts = get_posts( $query->query );
// Create an empty array to save the IDs of posts without a thumbnail
$ids = array();
// Run a loop and check the thumbnails
foreach ($posts as $post){
if(!has_post_thumbnail($post->ID)){
$ids[] = $post->ID;
}
}
// Now time to exclude these posts from the query
$query->set( \'post__not_in\', $ids );
}
}
这可能需要额外的查询。缓存可以节省您的时间。