• Home
  • Nous contacter

Le blog d'Adfab

Le blog d'Adfab

Le blog d'Adfab

Le blog d'Adfab
CMS

WordPress, quelques codes utiles – Épisode 2

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 !

A plus tard !

26/08/2014 20 MIN READ BY: Nicolas GUYOT 0 COMMENT
SHARE
LIRE LA SUITE

Nicolas GUYOT

Animations web: Optimiser le FPS de son CSS

Module Prestashop | épisode 2

VOUS POURRIEZ AIMER

CMS Drupal Fuse, démarrez vos projets Drupal 7 à la vitesse d’une fusée

CMS Drupal 7 – Les EntityFieldQuery et les requêtes aléatoires

Backend CMS Recette de l’internationalisation sur WordPress

CMS e-Commerce J’ai testé pour vous Drupal Commerce !

CMS Développement DevOps Industrialiser WordPress avec WordPlate

CMS e-Commerce WordPress E-commerce ? avec woocommerce c’est possible !

A propos d’Adfab

Nous sommes un studio de production digitales et d’innovation digitales au service des agences et des annonceurs
Nous recherchons le scintillement dans les regards et le plaisir de réalisations sur-performantes
Nous sommes techno-agnostiques
Nous sommes Adfab

Le blog d'Adfab
Copyright © 2018 Adfab Connect