webentwicklung-frage-antwort-db.com.de

Wie zeige ich nur Beiträge mit Bildern an?

Ich möchte Posts ohne Bilder auf der Startseite ausblenden, daher benötige ich eine Reihe von IDs dieser Posts.

Ich weiß, wie ich Beiträge auf der Homepage nach ID verstecke, aber ich muss nur Beiträge mit Bildern anzeigen. Das habe ich schon:

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
Tolik

Keine Post-IDs erforderlich, da keine Miniaturansicht vorhanden ist. Verwenden Sie eine Meta-Abfrage, um nur diejenigen abzurufen, die ein Miniaturbild haben.

Meta-Abfrage hinzufügen

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

Oder verwenden Sie eine benutzerdefinierte Abfrage.

$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 );
3
Rene Korss