web-dev-qa-db-fra.com

wp_get_attachment_image () ne fonctionne pas lors de l'ajout des attributs with et height

J'utilise wp_get_attachment_image() pour essayer de générer une balise img avec des attributs width et height.

Voici mon code:

$thumb_src = wp_get_attachment_image( $id, 'thumbnail', false, array('width'=> '10', 'height' => '10' ));
$thumb_output = "<li>".$thumb_src."</li>";

Je m'attendais à ce que cela produise:

<li><img width="10" height="10" src="http://..../wp-content/uploads/2011/01/pic-150x150.jpg" class="attachment-thumbnail" alt="pic" width="10" height="10" /></li>

Au lieu de cela, il affiche:

<li><img width="150" height="150" src="http://..../wp-content/uploads/2011/01/pic-150x150.jpg" class="attachment-thumbnail" alt="pic" width="10" height="10" /></li>

Merci beaucoup pour toute aide que n'importe qui peut donner. Je l'ai essayé avec d'autres attributs, comme l'attribut style, et la balise de style apparaît comme prévu. Je suppose que je pourrais utiliser la balise style pour définir les dimensions de cette façon, mais je ne comprends pas pourquoi la méthode largeur/hauteur ne fonctionne pas!

1
Sarah

Comme indiqué dans la documentation, il n'y a pas d'attributs width et height dans le quatrième paramètre de la fonction. Voici ce que vous pourriez vouloir faire:

wp_get_attachment_image(
    $id,
    array( 10, 10 )
);

Une méthode alternative recommandée consiste à définir une taille d'image qui permettra à WordPress de générer une vignette pour cette taille lors du téléchargement.

add_action( 'after_setup_theme', 'wpse_132171_create_image_size' );
function wpse_132171_create_image_size() {

    add_theme_support( 'post-thumbnails' );
    add_image_size( 'my_size', 10, 10 ); 
}

Avec cela, vous pouvez faire référence à cette taille par le slug my_size dans wp_get_attachment_image():

wp_get_attachment_image( $id, 'my_size' );

Pour cette solution, vous devez reconstruire vos vignettes si vous avez des images existantes utilisant un plugin tel que "AJAX Thumbnail Rebuild"

Remarque: Lorsque vous utilisez un array comme 2ème argument, WordPress utilise attachment-{$val1}x{$val2} (une chaîne construite à partir des valeurs du tableau) en tant que class. Ce comportement se brise dès que vous utilisez le 4ème argument (array attributes) et que vous y ajoutez une clé class personnalisée. La coutume class remplacera ce qui est fourni par le noyau. Ceci pourrait être considéré comme un bogue.

2
David