web-dev-qa-db-fra.com

Récupérer l'image sélectionnée en tant qu'objet

Je souhaite récupérer l'image sélectionnée d'une publication en tant qu'objet (tableau) afin de disposer de toutes les tailles d'image disponibles. La fonction get_the_post_thumbnail () ne fait pas cela, des idées?

1
Staffan Estberg

Commencez par obtenir les tailles d’image enregistrées et l’identifiant de pièce jointe:

$sizes = get_intermediate_image_sizes();
$post_thumbnail_id = get_post_thumbnail_id();

Parcourez les tailles enregistrées et créez un tableau:

$images = array();
foreach ( $sizes as $size ) {
    $images[] = wp_get_attachment_image_src( $post_thumbnail_id, $size );
}

Combiné en tant que fonction à placer dans functions.php:

function get_all_image_sizes($attachment_id = 0) {
    $sizes = get_intermediate_image_sizes();
    if(!$attachment_id) $attachment_id = get_post_thumbnail_id();

    $images = array();
    foreach ( $sizes as $size ) {
        $images[] = wp_get_attachment_image_src( $attachment_id, $size );
    }

    return $images;
}

Usage:

$featured_image_sizes = get_all_image_sizes();
3
passatgt

C'est vieux, mais la réponse ci-dessus n'est pas tout à fait complète. Pour obtenir correctement toutes les tailles d'image avec tous les attributs d'image, vous devez également saisir l'objet de pièce jointe.

Quelque chose comme ça:

if ( has_post_thumbnail() ) {
    $thumb = array();
    $thumb_id = get_post_thumbnail_id();

    // first grab all of the info on the image... title/description/alt/etc.
    $args = array(
        'post_type' => 'attachment',
        'include' => $thumb_id
    );
    $thumbs = get_posts( $args );
    if ( $thumbs ) {
        // now create the new array
        $thumb['title'] = $thumbs[0]->post_title;
        $thumb['description'] = $thumbs[0]->post_content;
        $thumb['caption'] = $thumbs[0]->post_excerpt;
        $thumb['alt'] = get_post_meta( $thumb_id, '_wp_attachment_image_alt', true );
        $thumb['sizes'] = array(
            'full' => wp_get_attachment_image_src( $thumb_id, 'full', false )
        );
        // add the additional image sizes
        foreach ( get_intermediate_image_sizes() as $size ) {
            $thumb['sizes'][$size] = wp_get_attachment_image_src( $thumb_id, $size, false );
        }
    } // end if

    // display the 'custom-size' image
    echo '<img src="' . $thumb['sizes']['custom-size'][0] . '" alt="' . $thumb['alt'] . '" title="' . $thumb['title'] . '" width="' . $thumb['sizes']['custom-size'][1] . '" height="' . $thumb['sizes']['custom-size'][2] . '" />';
} // end if
1
Sean Michaud