web-dev-qa-db-fra.com

wp_nav_menu () avec plusieurs classes

J'essaie de faire un menu avec wp_nav_menu(). J'essaie d'ajouter plusieurs classes mais je n'ai pas d'expérience avec cela. Je pense que je dois écraser un cours mais ...

<div class="top-menu">
<ul class="nav_menu">        
    <li class="nav_menu-item"><a href="javascript:void(0)" class="nav-p">PRODUCTS</a>
    <!-- ... -->
    </li>
    <li class="nav_menu-item"><a href="javascript:void(0)" class="nav-n">NEW</a>
        <ul class="nav_submenu">
        <!-- ... -->
        </ul>
    </li>
    <li class="nav_menu-item">
    <!-- ... -->
    </li>
    <li class="nav_menu-item">
    <!-- ... -->
    </li>
</ul>

Pourriez-vous m'aider avec le code?

1
siad

Je ne sais pas quelles sont vos conditions pour chaque classe en fonction du crochet que vous recherchez: nav_menu_css_class . Vous pouvez l'utiliser pour ajouter des classes ou supprimer des classes de chaque élément de liste <li> dans le menu.

/**
 * Modify list item classes of wp_nav_menu
 * - https://codex.wordpress.org/Plugin_API/Filter_Reference/nav_menu_css_class
 * - https://developer.wordpress.org/reference/hooks/nav_menu_css_class/
 *
 * @param Array $classes || List of list-item classes
 * @param WP_Nav_Item Object $item || The Nav Menu Object, NOT the WP_Post object
 *
 * @return Array $classes
 */
function my_special_nav_class( $classes, $item ) {

    $menu_to_test_against = 'MENU NAME HERE';

    // Ensure we only apply this filter on the menu of our choice
    if( ! has_term( $menu_to_test_against, 'nav_menu', $item ) ) {
        return $classes;
    }

    $classes[] = 'nav-p';
    $classes[] = 'nav-n';

    return $classes;
}
add_filter( 'nav_menu_css_class', 'my_special_nav_class', 10, 2 );
1
Howdy_McGee