[Wordpress] wp_nav_menu(); current-menu-item personnalisé

Il est de plus en plus fréquent de pousser très loin la personnalisation de WordPress lors des projets web et l'un des problèmes que l'on rencontre est la sélection d'un élément dans un menu wp_nav_menu(); lorsqu'on utilise les posttype.
Par défaut WordPress n'est pas capable de savoir si un post
type est associé à une page parente et ne sélectionnera donc pas l'élément dans le menu.

Voici une astuce pour corriger ce problème : Mon exemple porte sur les posttype mais ceci s'applique bien entendu à tous les cas de figures._

add_filter('wp_nav_menu_objects', 'custom_menu');

function custom_menu($sorted_menu_items)  
{
    foreach ($sorted_menu_items as &$item) {
        switch($item->bject_id) {

            // ID de la page "parente"
            case 10:

                // post_type des "pages enfants"
                if (get_post_type() == 'voitures') {
                    $item->current = true;
                    $item->classes[] = 'current-menu-item';
                }
                break;
        }
    }
    return $sorted_menu_items;
}

Ce code est à placer dans le fichier function.php de votre thème et doit, bien entendu, être personnalisé suivant vos besoins.

© Johnstyle 2017 • All rights reserved.