Wie wendet man eine class auf das zweite Wort in der Menüliste an?

Ich möchte eine class auf ein Wort in meinem Menü anwenden. Angenommen, ich habe in meinem Menü einen Listeneintrag namens “Mein Artikel”. Ich würde gerne eine class auf das Wort “Item” anwenden, damit ich es beliebig gestalten kann.

Muss ich einen Bereich zum Listenelement hinzufügen und dann die class zu meinem CSS hinzufügen?

 #nav ul li a.dark-blue { color: #00008B; } 

Solutions Collecting From Web of "Wie wendet man eine class auf das zweite Wort in der Menüliste an?"

Sie können den title jedes Navigationsmenüelements filtern. Leider hat der Filter den Namen 'the_title' – wenn wir nur einen einfachen Filter hinzufügen, können wir auch Strings außerhalb der Nav-Menüs abfangen.

Also brauchen wir eine zweite function, um den Titelfilter des Navigationsmenüs zu aktivieren, wenn die Menü-class beginnt und aus, wenn sie endet.

Beginnen wir mit der zweiten function:

 add_filter( 'wp_nav_menu_args', 'wpse_14037_filter_switch' ); add_filter( 'wp_nav_menu', 'wpse_14037_filter_switch' ); /** * Switches the registration of out title filter on and off. * * @param mixed $input Array or string, we just pass it through. * @return mixed */ function wpse_14037_filter_switch( $input ) { $func = 'wp_nav_menu_args' == current_filter() ? 'add_filter' : 'remove_filter'; $func( 'the_title', 'wpse_14037_filter_title' ); return $input; } 

'wp_nav_menu_args' wird sehr früh in wp_nav_menu() aufgerufen. Wenn wpse_14037_filter_switch() in diesem Kontext läuft ( current_filter ), schalten wir den wpse_14037_filter_switch() .

'wp_nav_menu' wird aufgerufen, nachdem alle 'wp_nav_menu' gerendert wurden. Jetzt schalten wir den Titelfilter aus .

Jetzt brauchen wir den wpse_14037_filter_title() wir gerade registriert haben:

 /** * Adds a  to each word of a menu item title. * * @param string $title * @return string */ function wpse_14037_filter_title( $title ) { $title = trim( $title ); $parts = explode( ' ', $title ); $out = array (); $i = 1; foreach ( $parts as $part ) { $out[] = '' . $part . ''; } return join( ' ', $out ); } 

Ich habe beschlossen, die function generischer zu machen, als Sie es wollten. Andere Leute wollen vielleicht das dritte Wort … oder das 15. Wort stylen.

Um das zweite Wort in Ihrem Stylesheet zu adressieren, benutzen Sie einfach die neue class:

 /* Your menu may have the class 'menu'. */ .menu .part2 { color: #005; }