Fügen Sie wp_nav_menu mithilfe des Filter-Hooks nav_menu_css_class eine benutzerdefinierte Klasse hinzu


8

Ich habe einen benutzerdefinierten Beitragstyp in meinem WordPress-Thema. Ich möchte dem Navigationsmenü eine benutzerdefinierte Klasse für die Seiten hinzufügen, die in diesem benutzerdefinierten Beitragstyp erstellt wurden. Ich habe gelesen, dass Sie einen Filter-Hook verwenden können: "nav_menu_css_class", aber meine PHP-Chops sind ziemlich begrenzt. Wie richte ich diesen Filter-Hook so ein, dass er nur auf meine benutzerdefinierten Beitragstypseiten im Navigationsmenü angewendet wird, und gebe ihnen eine benutzerdefinierte Klasse?

Antworten:


8

Hier ist ein einfaches Beispiel:

add_filter('nav_menu_css_class', 'auto_custom_type_class', 10, 2 );
function auto_custom_type_class($classes, $item) {

    if ($item->type_label == "CUSTOM_TYPE_NAME"){
        $classes[] = "New_Class";
    }

    return $classes;
}

Ändern Sie einfach CUSTOM_TYPE_NAMEden Namen Ihres benutzerdefinierten Beitragstyps und New_Classden Namen Ihrer Klasse und fügen Sie dieses Snippet in die Datei functions.php Ihres Themas ein.


Das funktioniert. Bin dankbar!
Colin

Froh, dass ich helfen konnte.
Bainternet

Eine andere Frage: $item->type_labelWoher kommt das und gibt es andere Dinge, die Sie auf diese Variable "$ item" anwenden können?
Colin

1
Das $ item-Objekt wird vom Aufruf von apply_filters übergeben und enthält alle Elementvariablen. Sie können eine Liste der erhalten, indem Sie irgendwo in der Funktion hinzufügenvar_dump($item);
Bainternet

Wow süß! (hat es gerade ausgeführt) Gut zu wissen. Danke noch einmal.
Colin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.