Sur une ancre, l’attribut title
sert généralement à donner une indication sur la destination du lien. Si son utilité est certaine dans une optique d’accessibilité, cet attribut peut poser des problèmes de lisibilité sur les sous-menus lorsqu’il est appliqué sur les liens d’un menu déroulant vertical ou horizontal comme c’est le cas sur css 4 design. Dans WordPress, le title
des liens des catégories affiche la description de la catégorie si elle est renseignée, ou un title
par défaut si l’on ajoute le paramètre use_desc_for_title
dans la fonction wp_list_categories()
. Or, je n’ai rien trouvé qui permet de supprimer purement et simplement ce title
une bonne fois pour toute.
Avec jQuery
Voyons comment jQuery peut nous aider avec la méthode removeAttr()
qui permet de supprimer l’attribut passé en paramètre, ici le title
, soit :
$(document).ready(function () { $('#catlist ul a').removeAttr('title'); });
Merci à ceux qui ont pris le temps de répondre à ma question sur Twitter pour la bonne syntaxe jQuery :
Sans jQuery
jQuery c’est bien joli, mais il peut être intéressant d’avoir une version PHP pour se passer de cet attribut title
récalcitrant. Jamy me propose sur Twitter l’article Remove the Title Attribute from WordPress Category and Page Lists qui donne une solution à cet épineux problème. Il s’agit de supprimer la balise en question avec une fonction category_without_title_attribute() utilisant la fonction preg_replace de PHP à placer dans le fichier functions.php de votre thème WordPress. Reste à utiliser ensuite cette fonction à la place de wp_list_categories()
. C’est simple, net et sans bavure.
Supprimer les title dans le menu «Catégories»
<?php function categories_without_title_attribute() { $categories = wp_list_categories('echo=0'); $categories = preg_replace('/title="(.*?)"/','',$categories); echo $categories; } ?>
Supprimer les title dans le menu «Pages»
Pour faire la même chose avec la liste des pages WordPress, il suffit de modifier la fonction précédente comme suit :
<?php function pages_without_title_attribute() { $pages = wp_list_pages('echo=0'); $pages = preg_replace('/title="(.*?)"/','',$pages); echo $pages; } ?>
Remplacer wp_list_pages ou wp_list_categories
Si vous voulez utiliser ces fonctions personnalisées dans l’ensemble de votre thème, il suffit d’appliquer un filtre WordPress en ajoutant les actions suivantes dans functions.php :
add_filter('wp_list_categories', 'categories_without_title_attribute'); add_filter('wp_list_pages', 'pages_without_title_attribute');
Conclusion
La suppression pure et simple de l’attribut côté serveur permet de ne pas dépendre de l’installation d’un framework comme jQuery pour économiser les ressources côté client ou simplement en fonction de vos habitudes de travail. Toutefois, la méthode avec jQuery préserve un semblant d »accessibilité : au cas où Javascript est désactivé, les title
sont toujours là pour remplir leur office.
Pour compléter ton article, j’avais écrit un article sur le rôle du title du point de vue de l’accessibilité.
Je viens de tester la version php dans mon thème et elle n’a pas fonctionnée, elle me met la page en erreur :/
A bien regarder ces filtres, bien que débutant avec wordpress et n’étant pas un expert en php, je me demande même comment ça pourrait fonctionner: dans la nouvelle fonction il utilise la fonction qu’il veut remplacer o_O (donc boucle infinie?)
Bref, je vais m’y pencher plus longtemps pour voir où est le soucis.
Idem, même pbl d’erreur
As tu trouver une solution ?
You’ve really captured all the essnteilas in this subject area, haven’t you?
n7Qesx judlzaikzafl
qhGTQo wzrjsyfezrbb
Une balise title est obligatoire, notamment en xhtml strict.
De plus, l’accessibilité impose son usage et plus particulièrement sur les <q cite=" »> et les <q cite="« >
L’apparition d’une info bulle ne gâche en rien la lisibilité d’un menu (?!)
le survol déclenche l’info bulle au bout de plus de 500ms et une fois qu’elle est visible c’est ca qu’il faut lire, peu importe que ca cache partiellement le lien lui même.
Enfin, si l’on parle d’enrichissement jQuery, il y pléthore de moyens d’améliorer le comportement des info bulles.
Les retirer me parait un non sens.
L’attribut title n’est absolument pas obligatoire avec quelque doctype que ce soit. Il faut mettre cet attribut lorsqu’il y a besoin d’expliciter l’intitulé d’un lien.
Par exemple pour l’intitulé « >> » il est intéressant de préciser title= »page suivante ».
A l’inverse pour l’intitulé « accueil », il est totalement redondant et inutile de mettre title= »accueil ».
Je ne sais pas ou tu as lu qu’il fallait le mettre systématiquement mais c’est une erreur.
Hello, j’ai essayer d’ajoutter le code pour enlever le title des catégories mais ça ne marche pas. ON doit bien le mettre dans page.php? Dans un endroit précis?
Il faut placer les fonctions :
categories_without_title_attribute() {…}
pages_without_title_attribute() {…}
suivies de :
add_filter(‘wp_list_categories’, ‘categories_without_title_attribute’);
add_filter(‘wp_list_pages’, ‘pages_without_title_attribute’);
dans le fichier functions.php
je ne comprends pas, je pensais qu’en mettant title_li=0 ici cela suffisait:
wp_list_categories(‘orderby=id&show_count=__&title_li=0&use_desc_for_title=0&child_of=’.$this_category->cat_ID);
J’ai tout faux?
Là, comme ça, il me semble que le title_li=0 dont tu parles concerne un « titre » et non pas l’attribut « title » sur le lien menant à la catégorie
salut je propose ca 🙂
// Remove attribut title
function opt_remove_title_attr($return){
$patterns = array(0=>'# title=\"(.?)\"#',1=>"# title='(.?)'#");
return preg_replace($patterns, '',$return);
}
add_filter('wp_nav_menu', 'opt_remove_title_attr');
add_filter('wp_page_menu', 'opt_remove_title_attr');
add_filter('wp_list_categories', 'opt_remove_title_attr');
add_filter('wp_list_pages', 'opt_remove_title_attr');
add_filter('wp_tag_cloud', 'opt_remove_title_attr');
add_filter('get_archives_link', 'opt_remove_title_attr');
Bonjour,
j’essaie de supprimer l’attribut title « privé » de mon blog wordpress mais aucune de ces méthodes fonctionnent. J’utilise un thème généré sur WordPress theme generator, c’est peut-être la raison de ces dysfonctionnements…
Si vous avez une autre solution à proposer je suis preneuse.
Merci pour votre aide.