it-swarm.com.de

Beiträge nur mit Bild abfragen

Ich möchte 6 Posts abfragen, aber nur die, an die ein Bild angehängt ist. Ich verwende hierfür die meta_key-Methode mit WP_Query als solcher:

$args = array(
    'post_type'  => 'post',
    'meta_key' => '_thumbnail_id',
    'post_count' => 6 );
$query = new WP_Query($args);

Gefolgt von

<?php while($query->have_posts()) : $query->the_post(); ?>
    <h2><?php the_title(); ?></h2>
    <?php the_post_thumbnail('thumbnail'); ?>
<?php endwhile; ?>

Das scheint nicht zu funktionieren. Die Abfrage gibt mehr als 6 Beiträge zurück und auch solche, die kein spezielles Bild haben. Irgendwelche Ideen, was ich hier falsch gemacht habe?

@chip: var_dump($query); gibt ein großes Ergebnis aus, daher habe ich es in einem Pastebin gepostet.

13
harryg

Wenn Sie den Importer ausführen, müssen Sie das Kontrollkästchen aktivieren, um alle Medien/Anhänge herunterzuladen und zu importieren.

Wenn Sie dies nicht tun, ist für die Posts weiterhin ein Bildsatz mit Features vorhanden, aber der Anhang, auf den sie verweisen, ist ungültig, und jeder Versuch, the_post_thumbnail aufzurufen, schlägt fehl. Wenn Sie Ihren Code verwenden, erhalten Sie nur den Post-Titel und kein Thumbnail. Dies würde den Eindruck erwecken, als würden Posts ohne ein spezielles Bild eingezogen. Dies ist nicht der Fall, sie haben ein spezielles Bild, es ist nur aufgrund des Fehlers, den Sie beim Import gemacht haben, nicht verfügbar.

Löschen Sie Ihre Beiträge und importieren Sie sie erneut mit den richtigen Einstellungen.

Um den Punkt zu demonstrieren, haben Sie keinen Versuch unternommen, die Posts tatsächlich zu überprüfen. Überprüfen Sie immer z.

if ( $query->have_posts() ) { // you never checked to see if no posts were found
    while($query->have_posts()) { // alt style syntax doesn't work with most IDEs
        $query->the_post(); // individual statement should be on individual line
        ?><h2><?php the_title(); ?></h2><?php // you only need open/close tags here, not every line, save yourself some time typing
        if ( has_post_thumbnail() ) { // only print out the thumbnail if it actually has one
            echo '<p>post says it has a featured image</p>'; // double checking
            the_post_thumbnail('thumbnail');
        } else {
            echo '<p>this post does not have a featured image</p>';
        }
    }
} else {
    echo '<p>no posts found</p>';
}

Wenn Sie das Kontrollkästchen nicht aktiviert haben, werden Bilder mit dem Hinweis angezeigt, dass es sich um ein ausgewähltes Bild handelt, es wird jedoch kein Bild angezeigt

1
Tom J Nowell

Ab WordPress 3.5 unterstützen die Meta-AbfrageparameterEXISTS und NOT EXISTS als Vergleichsoperatoren. In dem Fall, in dem Sie diese verwenden, können Sie den Teil value der Metaabfrage weglassen. Versuchen Sie die folgenden Argumente für Ihre Abfrage:

$args = array(
   'post_type'  => 'post',
   'posts_per_page' => 6,
    'meta_query' => array(
        array(
         'key' => '_thumbnail_id',
         'compare' => 'EXISTS'
        ),
    )
);
21
helgatheviking