1
+ <?php
2
+ // bootstrap 5 wp_nav_menu walker
3
+ class bootstrap_5_wp_nav_menu_walker extends Walker_Nav_menu
4
+ {
5
+ function start_lvl (&$ output , $ depth = 0 , $ args = array ())
6
+ {
7
+ $ indent = str_repeat ("\t" , $ depth );
8
+ $ submenu = ($ depth > 0 ) ? ' sub-menu ' : '' ;
9
+ $ output .= "\n$ indent<ul class= \"dropdown-menu $ submenu depth_ $ depth \"> \n" ;
10
+ }
11
+
12
+ function start_el (&$ output , $ item , $ depth = 0 , $ args = array (), $ id = 0 )
13
+ {
14
+
15
+ $ indent = ($ depth ) ? str_repeat ("\t" , $ depth ) : '' ;
16
+
17
+ $ li_attributes = '' ;
18
+ $ class_names = $ value = '' ;
19
+
20
+ $ classes = empty ($ item ->classes ) ? array () : (array ) $ item ->classes ;
21
+
22
+ $ classes [] = ($ args ->walker ->has_children ) ? 'dropdown ' : '' ;
23
+ $ classes [] = ($ item ->current || $ item ->current_item_ancestor ) ? 'active ' : '' ;
24
+ $ classes [] = 'nav-item ' ;
25
+ $ classes [] = 'nav-item- ' . $ item ->ID ;
26
+ if ($ depth && $ args ->walker ->has_children ) {
27
+ $ classes [] = 'dropdown-menu dropdown-menu-end ' ;
28
+ }
29
+
30
+ $ class_names = join (' ' , apply_filters ('nav_menu_css_class ' , array_filter ($ classes ), $ item , $ args ));
31
+ $ class_names = ' class=" ' . esc_attr ($ class_names ) . '" ' ;
32
+
33
+ $ id = apply_filters ('nav_menu_item_id ' , 'menu-item- ' . $ item ->ID , $ item , $ args );
34
+ $ id = strlen ($ id ) ? ' id=" ' . esc_attr ($ id ) . '" ' : '' ;
35
+
36
+ $ output .= $ indent . '<li ' . $ id . $ value . $ class_names . $ li_attributes . '> ' ;
37
+
38
+ $ attributes = !empty ($ item ->attr_title ) ? ' title=" ' . esc_attr ($ item ->attr_title ) . '" ' : '' ;
39
+ $ attributes .= !empty ($ item ->target ) ? ' target=" ' . esc_attr ($ item ->target ) . '" ' : '' ;
40
+ $ attributes .= !empty ($ item ->xfn ) ? ' rel=" ' . esc_attr ($ item ->xfn ) . '" ' : '' ;
41
+ $ attributes .= !empty ($ item ->url ) ? ' href=" ' . esc_attr ($ item ->url ) . '" ' : '' ;
42
+
43
+ $ attributes .= ($ args ->walker ->has_children ) ? ' class="nav-link dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" ' : ' class="nav-link" ' ;
44
+
45
+ $ item_output = $ args ->before ;
46
+ $ item_output .= ($ depth > 0 ) ? '<a class="dropdown-item" ' . $ attributes . '> ' : '<a ' . $ attributes . '> ' ;
47
+ $ item_output .= $ args ->link_before . apply_filters ('the_title ' , $ item ->title , $ item ->ID ) . $ args ->link_after ;
48
+ $ item_output .= '</a> ' ;
49
+ $ item_output .= $ args ->after ;
50
+
51
+ $ output .= apply_filters ('walker_nav_menu_start_el ' , $ item_output , $ item , $ depth , $ args );
52
+ }
53
+ }
0 commit comments