Taxonomy Thumbnail est une extension dédiée aux développeurs, permettant d’ajouter une « image à la une » aux termes de taxonomie.
Cela existe déjà, pourquoi refaire une extension ?
Lors d’un développement chez un client il y a quelques temps, nous avons dû utiliser une extension qui permet de faire cela (faute de temps), mais elle n’a pas été mise à jour depuis longtemps et utilise encore la vieille (et un peu cassée) modale des médias. De plus cela faisait longtemps que je voulais utiliser une autre extension (je vais y revenir), je me suis donc lancé.
UI
Les miniatures peuvent être ajoutées à la création d’un terme de taxonomie, ou plus tard sur sa page d’édition.
La liste des termes a une colonne affichant la miniature actuelle.
L’extension utilise donc la « nouvelle » modale des médias (celle apparue avec WP 3.5), pas la vieille « thickbox ».
Des efforts ont été faits au niveau accessibilité, il ne s’agit pas d’un simple bouton « Ajouter une miniature ». Par exemple, wp.a11y.speak()
est utilisé si disponible. N’étant pas un expert a11y, si vous avez des suggestions d’amélioration, vos retours d’expérience seront les bienvenus.
Fonctionne avec ou sans JavaScript.
Si JavaScript est activé, les miniatures sont assignées via ajax lors de l’édition d’un terme, pas besoin de mettre à jour le terme donc.
Par défaut, l’UI est affichée pour toutes les taxonomies publiques, mais cela peut être filtré :
1234567
add_filter( 'sftth_taxonomies', 'my_taxonomies_with_thumbnail' );
function my_taxonomies_with_thumbnail( $taxonomies ) {
unset( $taxonomies['post_tag'] );
$taxonomies['my_custom_tax'] = 'my_custom_tax';
return $taxonomies;
}
Template tags
Vous les trouverez dans inc/template-tags.php.
Note importante : pour WP 4.4+, ces fonctions utilisent term_id
. Pour WP < 4.4, elles utilisent term_taxonomy_id
.
J’ai essayé de répliquer les fonctions pour les miniatures d’article.
Récupérer l’ID de la miniature du terme :
get_term_thumbnail_id( $term_id )
Vérifier si le terme a une miniature attachée :
has_term_thumbnail( $term_id )
Afficher la miniature du terme :
the_term_thumbnail( $term_id, $size = 'post-thumbnail', $attr = '' )
Retourner la miniature du terme :
get_term_thumbnail( $term_id, $size = 'post-thumbnail', $attr = '' )
Assigner une miniature de terme :
set_term_thumbnail( $term_id, $thumbnail_id )
Supprimer la miniature du terme :
delete_term_thumbnail( $term_id )
Stocker les données
Avec WP 4.4 et supérieur, l’API term metas est utilisée.
En dessous de WP 4.4, il y a deux façons de stocker les IDs de miniature
- Utiliser des metas de taxonomie avec l’extension Meta for Taxonomies.
- Utiliser une option (un tableau sous la forme
term_taxonomy_id => thumbnail_id
). Le nom de l’option peut être personnalisé en définissant la constanteSFTTH_OPTION_NAME
sans wp-config.php
Récupérer les termes
Utilisez get_terms()
avec un paramètre spécifique pour récupérer seulement les termes avec miniature :
123
$terms = get_terms( array(
'with_thumbnail' => true,
) );
Avec WP 4.4 et supérieur, vous pouvez aussi utiliser un raccourci pour construire votre propre meta query :
123456789
$terms = get_terms( array(
'meta_query' => array(
'relation' => 'AND',
array(
// Any meta query.
),
sftth_meta_query(),
),
) );
En dessous de WP 4.4, si vous utilisez l’extension Meta for Taxonomies, vous devriez toujours mettre les miniatures en cache lors d’une boucle. Avec 'with_thumbnail' => true
c’est fait automatiquement, mais si vous voulez afficher tous les termes, même ceux sans miniature, il suffit de passer with_thumbnail
à false :
123
$terms = get_terms( array(
'with_thumbnail' => false,
) );
Il s’agit donc ici d’un get_terms()
classique mais avec mise en cache des miniatures.
Désinstallation
Lors de la désinstallation de l’extension vous pouvez choisir de NE PAS supprimer les miniatures (les images ne sont pas supprimées hein ;) ) en définissant une constante dans wp-config.php :
define( 'SFTTH_KEEP_DATA', true );
Vous pouvez aussi simplement désactiver l’extension et la supprimer manuellement via ftp. La constante a l’avantage de pouvoir être définie à l’avance afin d’éviter une catastrophe si le client désinstalle l’extension par mégarde.
Traduction
Américain, Français.
Notes
L’extension devrait être compatible à partir de WP 3.5, mais n’a été testée qu’avec WP 4.2.2 jusque là.
Crédits : photo utilisée dans la bannière par Nicolas Janik (CC BY 2.0).
Commentaires
Commentaire de TweetPress de France @ TweetPress.fr.
Génial, avec ACF un champ dans la taxo pour les terms et hop oui mais tout le monde ne passe par ACF donc très bonne idée.
Commentaire de Nicolas F.
J’utilise aussi l’ancienne extension qui fait ça, et j’aimerais bien aussi un peu de modernité. Néanmoins, je me vois mal refaire le tour de toutes les taxonomies avec image (y en a un paquet…) : y aurait-il un moyen de passer de l’un à l’autre au départ ?
Merci en tout cas pour l’extension :)
Commentaire de Grégory Viguier.
Il y a sûrement moyen oui, mais je n’ai rien prévu, car il n’y a pas une ancienne extension mais plusieurs qui font déjà cela. Je n’avais donc ni l’envie ni le besoin de faire un script de transfert.
À mon avis la plupart utilise une option pour stocker ces infos, comme le fait mon extension si on n’utilise pas Meta for Taxonomies. Il suffirait de renommer l’option existante dans la plupart des cas je pense.
Commentaire de Jowel.
Hi, Thanks for this great plugin. I am facing problem to show the thum image in the frontend in a template file. Could you please tell me how I can show the image in a template file? Your help would be greatly appreciate.
Thanks Again