webentwicklung-frage-antwort-db.com.de

wp_nav_menu () mit mehreren Klassen

Ich versuche mit wp_nav_menu() ein Menü zu erstellen. Ich versuche, mehrere Klassen hinzuzufügen, habe jedoch keine Erfahrung damit. Ich denke, ich muss eine Klasse überschreiben, aber ...

<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>

Könnten Sie mir mit dem Code helfen?

1
siad

Ich weiß nicht, was Ihre Bedingungen für jede Klasse sind, da der Haken, den Sie suchen, nav_menu_css_class ist. Sie können damit Klassen anhängen oder Klassen aus jedem Listenelement <li> im Menü entfernen.

/**
 * 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