fix(nav): handle missing walker property in args
Improves robustness by checking if the walker property exists in args before accessing it. This prevents potential undefined property errors when args is missing the walker attribute. Ensures better compatibility with different menu configurations and avoids runtime issues.
This commit is contained in:
parent
f2a32cf134
commit
d8fbff525d
1 changed files with 15 additions and 15 deletions
|
@ -19,39 +19,39 @@ class WP_Bootstrap_Navwalker extends Walker_Nav_Menu
|
|||
function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0)
|
||||
{
|
||||
$indent = ($depth) ? str_repeat("\t", $depth) : '';
|
||||
|
||||
|
||||
$li_attributes = '';
|
||||
$class_names = $value = '';
|
||||
|
||||
|
||||
$classes = empty($item->classes) ? array() : (array) $item->classes;
|
||||
$classes[] = ($args->walker->has_children) ? 'dropdown' : '';
|
||||
$classes[] = (isset($args->walker) && $args->walker->has_children) ? 'dropdown' : '';
|
||||
$classes[] = 'nav-item';
|
||||
$classes[] = 'nav-item-' . $item->ID;
|
||||
if ($depth && $args->walker->has_children) {
|
||||
if ($depth && isset($args->walker) && $args->walker->has_children) {
|
||||
$classes[] = 'dropdown-submenu';
|
||||
}
|
||||
|
||||
|
||||
$class_names = join(' ', apply_filters('nav_menu_css_class', array_filter($classes), $item, $args));
|
||||
$class_names = ' class="' . esc_attr($class_names) . '"';
|
||||
|
||||
|
||||
$id = apply_filters('nav_menu_item_id', 'nav-menu-item-' . $item->ID, $item, $args);
|
||||
$id = $id ? ' id="' . esc_attr($id) . '"' : '';
|
||||
|
||||
|
||||
$output .= $indent . '<li' . $id . $value . $class_names . $li_attributes . '>';
|
||||
|
||||
|
||||
$attributes = !empty($item->attr_title) ? ' title="' . esc_attr($item->attr_title) . '"' : '';
|
||||
$attributes .= !empty($item->target) ? ' target="' . esc_attr($item->target) . '"' : '';
|
||||
$attributes .= !empty($item->xfn) ? ' rel="' . esc_attr($item->xfn) . '"' : '';
|
||||
$attributes .= !empty($item->url) ? ' href="' . esc_attr($item->url) . '"' : '';
|
||||
|
||||
$attributes .= ($args->walker->has_children) ? ' class="nav-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"' : ' class="nav-link"';
|
||||
|
||||
$item_output = $args->before;
|
||||
|
||||
$attributes .= (isset($args->walker) && $args->walker->has_children) ? ' class="nav-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"' : ' class="nav-link"';
|
||||
|
||||
$item_output = isset($args->before) ? $args->before : '';
|
||||
$item_output .= '<a' . $attributes . '>';
|
||||
$item_output .= $args->link_before . apply_filters('the_title', $item->title, $item->ID) . $args->link_after;
|
||||
$item_output .= (isset($args->link_before) ? $args->link_before : '') . apply_filters('the_title', $item->title, $item->ID) . (isset($args->link_after) ? $args->link_after : '');
|
||||
$item_output .= '</a>';
|
||||
$item_output .= $args->after;
|
||||
|
||||
$item_output .= isset($args->after) ? $args->after : '';
|
||||
|
||||
$output .= apply_filters('walker_nav_menu_start_el', $item_output, $item, $depth, $args);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue