web-dev-qa-db-fra.com

Obtenir l'image d'origine à partir d'une URL miniature

J'utilise une méthode pour trouver la première image incluse dans le contenu d'un message à afficher sous forme de vignette (un petit hacky, mais cela fonctionne). Cependant, certains auteurs ajoutent des images de petite taille, et comme cette fonction ne trouve que l’URL de cette taille, elle n’a pas l’air bon si elle est gonflée.

if ($img = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches))
    return $img = $matches[1][0];

Il me faut donc un moyen d’obtenir l’URL de l’image d’origine, ou sa grande taille. Cela peut probablement être fait avec RegEx, mais quelle est la solution la plus rapide?

2
Emil

C'est en quelque sorte une solution alternative au tas de RegEx. Interrogez toutes les images jointes à la publication, obtenez la vignette de la première et affichez-la sous forme de vignette (vous pouvez même l'affecter à la vignette de publication si vous le souhaitez, afin de faciliter la prochaine exécution de la boucle). Donc, dans votre boucle, vous auriez:

if( have_posts() ) {
    $image_mimes = array( 'image/jpeg', 'image/gif', 'image/png' );

    while( have_posts() ) {
        the_post();
        $attachment_query = new WP_Query( array(
            'post_type'         => 'attachment',
            'post_parent'       => $post->ID,
            'post_status'       => 'inherit',
            'post_mime_type'    => $image_mimes,
            'posts_per_page'    => 1,
            'fields'            => 'ids',               // Small and Quick query, only pull attachment IDs
        ) );

        if( has_post_thumbnail() ) {
            $thumbnail_html = get_the_post_thumbnail();
        } elseif( $attachment_query->have_posts() ) {
            $thumbnail_html = wp_get_attachment_image( $attachment_query->posts[0], 'thumbnail' );
            wp_reset_query();
        } else {
            $thumbnail_html = 'Default Image HTML here - No Images Attached to Post';
        }

        echo $thumbnail_html;
    }
}

Maintenant, il y a quelques inconvénients à ceci:

  • Cela ne supprimera pas l'image du contenu, vous permettra simplement de l'ajouter en haut.
  • Cela inclut toutes images attachées à la publication, pas les images uniquement dans le contenu - de sorte que les images puissent être attribuées à la publication mais pas directement dans le contenu de la publication.
1
Howdy_McGee