如何只显示带有图片的帖子?

时间:2015-05-09 作者:Tolik

我想在首页隐藏没有图像的帖子,所以我需要获取这些帖子的ID数组。

我知道如何通过id隐藏主页上的帖子,但我只需要显示带有图像的帖子。这就是我已经拥有的:

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\');

1 个回复
最合适的回答,由SO网友:Rene Korss 整理而成

没有缩略图的帖子不需要ID。使用元查询仅获取具有缩略图的内容。

添加元查询

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\' );
或使用自定义查询。

$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 );

结束