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 Julio Potier @ BoiteAWeb.
Ha ouè nettement plus court ! Merci WordPress et merci Greg pour ce tuto efficace !
Commentaire de La Boîte A Re.
Franchement merci pour le tuyau, c’était également un de mes rêves :p
Du coup, j’ai cherché un peu d’infos et je trouve utile le fait de pouvoir retirer certaines tailles de l’admin. Ci-joint le lien sur lequel j’ai trouvé cette info (dernier bloc de code) : http://sumtips.com/2011/12/custom-image-sizes-in-wordpress.html
Merci pour ton blog que j’apprécie ;)
Commentaire de Greg.
Hé hé, merci :)
En fait, l’idée d’en supprimer ne m’était pas venue en tête, mais c’est vrai qu’avec un bête
unset( )
on peut le faire.A+
Commentaire de GeekPress.
Merci bien !
C’est un ligne sur un client, ça fonctionne nickel.
Avec un plus des unset sur les formats d’image inutiles (medium, large) et hop une admin hyper clean :)
Commentaire de welcoMattic.
Salut !
J’vais surement poser une question un peu idiote, mais .. à aucun moment dans ton article je ne vois de dimensions de miniatures ! :O
Comment/où tu les définies ??
Commentaire de Greg.
Salut welcoMattic.
Pour les définir il faut utiliser la méthode habituelle :
add_image_size()
;)A utiliser dans functions.php bien sûr.
Commentaire de welcoMattic.
Eh bah voila ^^’
Merci ;)