Como mostrar apenas postagens com imagens?

Eu quero ocultar postagens sem imagens na primeira página, então eu preciso obter uma série de ids dessas postagens.

Eu sei como escondem postagens na página inicial por ID, mas eu preciso mostrar apenas posts com imagens. Isto é o que eu já tenho:

function exclude_post($query) { if ($query->is_home) { $query->set('post__not_in', array(1,2) ); } return $query; } add_filter('pre_get_posts','exclude_post'); 

Solutions Collecting From Web of "Como mostrar apenas postagens com imagens?"

Não há necessidade de identificação de postagem o que não tem miniatura. Use meta consulta para obter apenas aqueles que têm miniatura.

Adicionar meta consulta

 function get_only_posts_with_images( $query ) { if ( $query->is_home() && $query->is_main_query() ) { $query->set( 'meta_query', array( array( 'key' => '_thumbnail_id' ) ) ); } } add_action( 'pre_get_posts', 'get_only_posts_with_images' ); 

Ou use uma consulta personalizada.

 $query = " SELECT posts.* FROM $wpdb->posts AS posts INNER JOIN $wpdb->posts AS attachment ON attachment.`post_parent`=posts.`ID` AND attachment.`post_type`='attachment' WHERE posts.`post_type`='post' "; $posts_with_images = $wpdb->get_results( $query, OBJECT );