Il y a 4 mois, j’expliquais ma méthode pour ajouter des tailles d’images supplémentaires dans l’administration de WordPress. Cette méthode nécessitait des ajouts dans la base de données et la reprise de deux fonctions de WordPress. Tout ceci est à présent largement simplifié puisqu’il ne nous faudra… qu’une dizaine lignes de code.
Rappelez-vous :
Cependant, je suis quand même surpris que WordPress ne permette pas simplement une telle chose, grâce à une fonction ou un hook.
Et bien c’est chose faite !
En effet, avec la version 3.3 de WordPress, est arrivé un nouveau filtre nous permettant de faire ceci très simplement. A croire que les Dieux de WordPress ont entendu mes prières.
Première chose, plus besoin d’enregistrement des dimensions dans la base de données (oui Madame, du coup vous pouvez supprimer les anciennes valeurs).
Deuxièmement, les tailles supplémentaires sont ajoutées automatiquement, plus besoin de les ajouter une à une manuellement.
Et ceci parce que j’ai découvert, quelques temps après le premier tutoriel, une variable très pratique : il s’agit de la variable globale $_wp_additional_image_sizes
. C’est un array qui contient toutes les tailles additionnelles, ainsi que leur dimensions.
Dernier point, grâce à ce nouveau filtre, plus besoin de reprendre les deux longues fonctions.
Au passage, on pourra aussi « renommer » une taille d’origine afin de lui donner un nom « visuel » plus parlant. Par exemple, vous avez un portfolio sur votre site, lequel utilise la taille « medium » comme miniature, nous pourrons renommer « Moyenne » en « Miniature de Portfolio ».
Trêve de blabla, place au code :
010203040506070809101112
add_filter( 'image_size_names_choose', 'sf_image_size_names_choose' );
function sf_image_size_names_choose($size_names) {
//$size_names['medium'] = __('Portfolio thumb', 'my-theme'); // This is an example to change a size name
global $_wp_additional_image_sizes;
if ( count($_wp_additional_image_sizes) ) {
foreach($_wp_additional_image_sizes as $name => $props) {
$size_names[$name] = __($name, 'my-theme');
}
}
return $size_names;
}
A la ligne 4 vous avez l’exemple dont je parlais pour changer le nom d’une taille d’image, il suffit de décommenter la ligne et d’éditer le nom.
Le tableau que l’on doit renvoyer doit avoir cette forme : array( 'size-name' => 'size-label', ... )
.
Comme les tailles supplémentaires n’ont pas de label, on peut en créer un grâce la traduction de WordPress avec __($name, 'my-theme')
, cependant il faudra éditer les fichiers .po/.mo de votre thème et ajouter les traductions. Sinon vous aurez simplement leur nom initial, ce qui est déjà suffisant.
See ya!
Commentaires
Commentaire de welcoMattic.
J’ai un custom post type (créer avec WPHP framework de Grafikart), et je voudrais qu’a ce CPT soit attaché une image à la une.
Jusque là ok.
Mais ensuite, lorsque je liste mon custom post type (archive-portfolio.php) je voudrais des miniatures de 326×187. Et quand j’affiche un projet de mon portfolio (single.php) je voudrais des miniatures de 620×266.
Je n’arrive pas a comprendre comment faire … une idée ?
Commentaire de Greg.
12
Pour le true à la fin c’est à toi de voir, il s’agit du crop : false pour que l’image fasse au maximum les dimensions indiquées, true pour que l’image fasse exactement les dimensions (elle est donc tronquée en hauteur ou largeur).
Commentaire de welcoMattic.
Et du coup lors de l’appelé de the_post_thumbnail() je fais un :
the_post_thumbnail('Portfolio Archive');
?Commentaire de Greg.
C’est ça :)
Commentaire de welcoMattic.
Cool ! Merci beaucoup ;)
Commentaire de Denny.
Bonjour,
Merci pour cet article, il m’a bien servi :)