Supprimer l'attribut title dans les catégories et les pages WordPress avec jQuery ou PHP

Rigueur. Et passion !

Ne dites pas à ma mère que je suis artisan en architecture de l'information appliquée aux sites web : elle croit que je suis webdesigner, intégrateur HTML & CSS, rédacteur web, formateur NTIC et consultant en webmarketing depuis 2001 ! Voulez-vous en savoir plus ?

Le blog de l'intégrateur web

Supprimer l'attribut title dans les catégories et les pages WordPress avec jQuery ou PHP

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.

Articles sur le même sujet

PS : Le respect de la vie privée sur internet est important : j'ai décidé d'échanger mon bouton Like de Facebook par un bouton Faire un don de Paypal car
Il n'y pas d'amour, il n'y a que des preuves d'amour (Jean Cocteau) ;) Merci d'avance.



14 commentaires pour “Supprimer l'attribut title dans les catégories et les pages WordPress avec jQuery ou PHP”

  1. truffo dit :

    Pour compléter ton article, j’avais écrit un article sur le rôle du title du point de vue de l’accessibilité.

  2. GregLone dit :

    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.

  3. Eric dit :

    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.

    • Davi dit :

      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.

  4. Coreygraphe dit :

    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?

    • br1o dit :

      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

      • Coreygraphe dit :

        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?

        • br1o dit :

          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

  5. aquelito dit :

    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');

  6. juliet dit :

    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.

Laissez un commentaire

Vous pouvez utiliser les balises HTML suivantes : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Les commentaires sont publiés sous votre pleine et entière responsabilité et ne doivent pas contrevenir aux lois et règlementations en vigueur. Les propos racistes ou antisémites, diffamatoire ou injurieux, divulguant des informations fausses, relatives à la vie privée d'une personne ou utilisant des oeuvres protégées par les droits d'auteurs ne sont pas les bienvenus et seront modérés sans modération.

Merci d'être constructif et n'oubliez pas : « sans la liberté de ramer il n'est point d'éloge flotteur ! »



Colophon

CSS & Webdesign est une publication irrégulomadaire à tendance hebdomadaire
éditée par Bruno Bichet qui carbure à WordPress et au café équitable.
Tous droits réservés © 2006 - 2011.

Contactez l'auteur du site