web-dev-qa-db-fra.com

Comment augmenter la taille de l'image renvoyée par le thème Flickr oEmbed in Twenty Twelve

J'utilise l'excellent plugin Flickr Gallery depuis un moment, mais lors de la mise à niveau d'un site vers WP3.5 et le thème Twenty Twelve, je suis tombé sur oEmbeds et notez que Flickr est pris en charge de manière native.

J'ai fait un test rapide et bien sûr, le simple fait de placer l'URL d'une page d'image Flickr produit une image dans le message, mais sa largeur ne dépasse pas 320 pixels. Etant donné que l’espace de contenu semble avoir une largeur d’environ 625 pixels, il serait bien préférable de renvoyer l’image de 500 pixels.

J'ai trouvé la mention du paramètre de largeur maximale, qui apparaît maintenant n'est pas présent dans l'interface d'administration de WP3.5. La seule raison pour laquelle j'ai envisagé de passer à la fonctionnalité native était de supprimer la personnalisation (le plugin que j'ai est extrêmement facile à utiliser). Dois-je créer un thème enfant simplement pour définir cette largeur? Ou est-ce que je manque quelque chose?

Tous les conseils appréciés.

3
zkarj

Cela n'a rien à voir avec le thème.

Flickr oEmbed renvoie un fichier image dont le nom se termine par _n.jpg et qui a effectivement une largeur de 320px. La version plus grande se termine par _b.jpg

Le hook de filtre que nous devons utiliser est embed_oembed_html .

Ce qui suit manipule le résultat du retour HTML pour augmenter la taille de l'image, vérifiez les commentaires:

add_filter( 'embed_oembed_html', 'wpse_77745_flickr', 10, 4 );

function wpse_77745_flickr( $html, $url, $attr, $post_ID )
{
    // Check if oEmbedding from Flicker
    $provider = parse_url( $url ); 
    if( 'www.flickr.com' != $provider['Host'] )
        return $html;

    // Get the image attributes from $html
    // http://stackoverflow.com/q/138313/1287812
    preg_match_all( '/(alt|title|src)=("[^"]*")/i', $html, $img );

    // Change small for big
    $src = str_replace( '_n.jpg', '_b.jpg', $img[2][0] );

    // Build output
    // SRC and ALT vars already contain quotes
    $big_flick = "<a href='{$url}'><img src={$src} alt={$img[2][4]} width='{$attr["width"]}' height='{$attr["width"]}'></a>";

    return $big_flick;
}

Pour référence, les valeurs de paramètre:

$html => '<a href="http://www.flickr.com/photos/maheshguild/8299345724/"><img src="https://i.stack.imgur.com/f31ow.jpg" alt="Flamingos !!!" width="320" height="213" /></a>'
$url  => 'http://www.flickr.com/photos/maheshguild/8299345724/'
$attr => array(
    ['width'] => 625
    ['height'] => 938
    )
$post_ID => 143

Il est plus facile de retracer toutes nos manipulations en utilisant FirePHP ( , la bibliothèque et le complément ).

2
brasofilo

J'ai découvert que le plugin que j'utilisais avait échoué sous Wordpress 3.5, m'obligeant à évaluer une solution de contournement avec un minimum de tracas. Voici ce qui a fonctionné.

J'ai modifié mon thème enfant existant de Twenty Eleven (je n'ai pas encore changé ledit site à vingt-douze) en ajoutant ce qui suit dans functions.php

if ( ! isset( $content_width ) ) $content_width = 640;

Cela a fait revenir sur Flickr des images d'une largeur de 640 pixels, ce qui convient à mon thème actuel. Notez que lorsque je règle la largeur à 639, elle renvoie à nouveau une image de 320 pixels de large. Il reste donc encore beaucoup de travail pour déterminer le comportement exact. Pour Twenty Twelve, la largeur par défaut est 625; il me reste donc à comprendre comment obtenir des images de 500 pixels de large.

0
zkarj