Aujourd’hui, je vais parler deux personnalisations de WordPress que j’ai pu trouver sur notre bienveillante Toile : une extension d’utilisation de menus et une formidable fonction qui liste les hooks de votre site.
Afficher une partie d’un menu en fonction de la page courante
Ce code a été développé par Christian Varga et est trouvable directement sur la page suivante : http://christianvarga.com/how-to-get-submenu-items-from-a-wordpress-menu-based-on-parent-or-sibling/
Je ne m’étendrai pas sur le code en lui-même car il est déjà très bien expliqué sur son site, simplement sur son fonctionnement.
La fonction étend l’utilisation de wp_nav_menu, la fonction d’appel de menu, en y ajoutant des options supplémentaires :
sub_menu
Si cette option est vraie, cela permet l’utilisation des autres options ajoutées.
direct_parent
Si cette option est vraie, le menu n’affichera que les sous-éléments du parent direct.
show_parent
Si cette option est vraie, le menu affichera tous les parents de la page courante.
Si direct_parent et show_parent sont vrais simultanément, vous affichez le parent direct et ses sous éléments uniquement.
Une méthode bien pratique lorsque l’on a besoin d’une navigation alternative moins lourde qu’un menu principal, par exemple. Je vous invite a consulter sa page de demo pour vous faire une idée du rendu.
Lister les hooks de votre site
J’ai trouvé cette méthode sur le site WpRecipes. Elle consiste à utiliser la globale $wp_filter de WordPress pour afficher la liste des hooks de votre site et des fonctions qui leurs sont associées, ainsi que leur priorité sur le hook.
Pour cela, il vous suffit de copier le code suivant dans votre fichier functions.php :
function list_hooked_functions($tag=false){ global $wp_filter; if ($tag) { $hook[$tag]=$wp_filter[$tag]; if (!is_array($hook[$tag])) { trigger_error("Nothing found for '$tag' hook", E_USER_WARNING); return; } } else { $hook=$wp_filter; ksort($hook); } echo '
'; foreach($hook as $tag => $priority){ echo " >>>>>\t$tag "; ksort($priority); foreach($priority as $priority => $function){ echo $priority; foreach($function as $name => $properties) { echo "\t$name "; } } } echo '
‘;
return;
}
Il ne vous reste plus qu’à appeler la fonction où bon vous semble, sans argument pour tous les hooks, avec le nom du hook pour n’en lister qu’un seul.
Si elle n’est pas utile pour un utilisateur, elle s’avère très pratique en développement, par exemple lorsque vous cherchez à savoir ce qui est appelé par un hook précis, ou tout simplement pour connaître les hooks custom d’un plugin installé.
Cette fonction a toutefois ses faiblesses : on ne différencie pas les actions des filters. Pour les hooks natifs de WordPress, il suffit de consulter la documentation, mais pour des plugins, cela demande un peu d’exploration. Mais au moins, vous savez ce que vous cherchez !