classn CSS (Optional) – wie referenziere ich dies in PHP?

Ich habe eine unendliche gelesen (ja es scheint mehr zu geben, als ich zu lesen), die gleichen Artikel darüber, wie man eine class auf den Anker und nicht das Link-Element mit nav_menu_link_attributes und einem Walker nav_menu_link_attributes .

Keiner von ihnen implementiert jedoch die benutzerdefinierte classnoption im Menü, die für den Anker verwendet werden soll. Scheint wie eine nette function, um dem Benutzer zu erlauben, seine eigene class hinzuzufügen, was ist jedoch, wenn ich diese class auf ein bestimmtes isoliertes Element im Thema anwenden möchte?

Bildbeschreibung hier eingeben

Ich habe versucht, aber nicht gesehen, wo es dokumentiert, was dieser Datenwert zurückgegeben wird? Wie kann ich auf dieses optionale Datenelement verweisen?

Mein Projekt verwendet das Ankerklassenattribut, um zum Abschnitt der Seite zu blättern.

Solutions Collecting From Web of "classn CSS (Optional) – wie referenziere ich dies in PHP?"

Sie können auf diese classn wie folgt zugreifen:

 // where 'Top' is the menu name, slug or ID. But not menu location. $menu_items = wp_get_nav_menu_items( 'Top' ); foreach ( $menu_items as $menu_item ) { $menu_classes = $menu_item->classes; print_r( $menu_classes ); } 

Ich fand am Ende, dass es der erste Schlüssel ist, der in $items->classes also benutzte eine Beschreibung $items->classes , um zu überprüfen, ob es keine leeren $items->classes[0] .

 ! empty( $item->classes[0] ) and $attributes .= ' class="' . esc_attr( $item->classes[0] ) .'"'; 

Für diejenigen von Ihnen, die dies in Ihrem eigenen Projekt verwenden möchten, verwenden Sie bitte den folgenden Code.

 class description_walker extends Walker_Nav_Menu { /** * Start the element output. * * @param string $output Passed by reference. Used to append additional content. * @param object $item Menu item data object. * @param int $depth Depth of menu item. May be used for padding. * @param array|object $args Additional strings. Actually always an instance of stdClass. But this is WordPress. * @return void */ function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { $classes = empty ( $item->classes ) ? array () : (array) $item->classes; $class_names = join( ' ' , apply_filters( 'nav_menu_css_class' , array_filter( $classes ), $item ) ); ! empty ( $class_names ) and $class_names = ' class="'. esc_attr( $class_names ) . '"'; $output .= " 

Lass es mich wissen, wenn das für dich hilfreich war!