Wie kann ich die Miniaturansicht von einem WP_Post-Objekt erhalten?

Lesezeit: 3 Minuten

Benutzer-Avatar
Madaras Geist

Ich versuche, eine Reihe von Seiten unter einer bestimmten Taxonomie zu durchlaufen. Der Schleifenteil funktioniert großartig und ich bekomme alle Seiten, die ich brauche (schön verpackt in WP_Post Gegenstände).

Allerdings stehe ich jetzt vor einem anderen Problem. Ich möchte das Miniaturbild der Seite so einfügen, wie es im Editor festgelegt ist. Ich habe jede Kombination von versucht get, the, thumbnail, featured, image, _, -fiel mir ein, vergebens.

Das WP_Post Objekt ist ziemlich neu, und Dokumentation fehlt.

Kann jemand Licht in dieses Mysterium bringen? Mein Ziel ist es, irgendwann einen Haufen zu zeigen <figure> Elemente, die ein Bild, einen Titel und eine kurze Beschreibung jedes Objekts enthalten.

Benutzer-Avatar
brasophilo

Das Folgende ist nur ein Proof of Concept in Form eines Shortcodes. Es gibt einen Codeblock mit allen Beiträgen aus, die eine haben Vorgestelltes Bild.

Funktionsreferenz: has_post_thumbnail, get_the_post_thumbnail

add_shortcode( 'all-post-thumbs', 'so_14007170_dump_post_thumbs' );

function so_14007170_dump_post_thumbs( $atts, $content ) 
{
    // Query
    $posts = get_posts( array(
        'post_type'    => 'post',
        'numberposts'  => -1,
        'post_status'  => 'publish'
    ) );

    // Build an array of post thumbnails
    $thumbs = array();
    foreach( $posts as $post)
    {
        if( has_post_thumbnail( $post->ID) )
            $thumbs[] = array( $post->post_title, htmlentities(get_the_post_thumbnail( $post->ID ) ) );
    }

    // Build output and return
    $echo = '<pre>'. print_r( $thumbs, true ) . '</pre>';
    return $echo;
}

Ergebnis im Frontend:

var-Dump

Beiträge mit Beitragsbild:

Geben Sie hier die Bildbeschreibung ein

  • Aha! Das habe ich gesucht! get_the_post_thumbnail akzeptiert einen Ausweis! (Ich hasse WordPress wirklich). Vielen Dank! +25!

    – Madaras Geist

    22. Dezember 2012 um 23:26 Uhr

  • @developerbmw, welche Kommas? 😛

    – Brasilo

    15. Mai 2017 um 3:11 Uhr

  • @brasofilo viel besser 😀

    – Entwicklerbmw

    17. Mai 2017 um 3:47 Uhr

Benutzer-Avatar
Das Alpha

Nicht sicher, was Sie wollen, aber wenn Sie alle Bilder einer bestimmten Seite erhalten möchten, können Sie verwenden

$parent="your page id";
$args=array(
    'post_parent' => $parent,
    'post_type' => 'attachment',
    'post_mime_type' => 'image',
    'orderby' => 'menu_order',
    'order' => 'ASC',
    'numberposts' => -1 
);
$images = get_children($args);

Sie können diesen Code in Ihre Schleife einfügen und wenn Sie die entsprechenden bereitstellen page_id wie parent dann bekommst du alle Bilder als Array in der $images und kann eine Schleife ausführen.

Weiterlesen bei Kodex.

Aktualisieren:

Um nur das vorgestellte Bild zu erhalten, können Sie verwenden

echo get_the_post_thumbnail('page id here', 'thumbnail');

Weiterlesen bei Kodex.

  • Ist das von mir ausgewählte “Empfohlene Bild” darunter zu finden? Wenn ja, ist es möglich, nur diese zu bekommen?

    – Madaras Geist

    22. Dezember 2012 um 23:18 Uhr

  • Möchten Sie nur das empfohlene Bild der Seite erhalten?

    – Das Alpha

    22. Dezember 2012 um 23:19 Uhr

if ( have_posts() ) : while ( have_posts() ) : the_post();
    // stuff before thumbnail

    $thumbnail_args = array();

    // insert whatever thumbnail args you want

    echo get_the_post_thumbnail();

    // stuff after thumbnail

endwhile; else:

    echo "<h2>Sorry, nothing to see here.</h2>";
endif

Leider sind die WP_Post-Methoden wirklich schlecht benannt. Den meisten Methoden, die mit dem Post interagieren, muss eine Anordnung von ‘_’ und ‘post’ hinzugefügt werden.

  • (Leider?) Zum Glück verwende ich nicht die globale Schleife, sondern eine innere Schleife, die von WP_Query generiert wird. Danke trotzdem 🙂

    – Madaras Geist

    22. Dezember 2012 um 23:27 Uhr

1360340cookie-checkWie kann ich die Miniaturansicht von einem WP_Post-Objekt erhalten?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy