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?

Colin
quelle

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.

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