Задать вопрос
@Anonimmus

Как сделать dropdown элемент ссылкой bootstrap nav walker?

Добрый вечер, подскажите как сделать родительский элемент также ссылкой?? ведушей на каталог

<ul id="menu-katalog-menyu-menyu-kategorij-sleva" class="submenu"><li id="menu-item-42907" class="dropdown menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-has-children"><a class="footer__nav-link active" href="<? echo $object->url ?>" data-toggle="dropdown" role="button" aria-expanded="false"><span>Керамическая плитка <b class="caret"></b></span></a>
<ul class="submenu" role="menu">
	<li id="menu-item-42913" class="menu-item menu-item-type-custom menu-item-object-custom"><a class="footer__nav-link" href="https://keramavrn.ru/product-category/keramicheskaya-plitka/?filters=vneshnij-vid%5B1746%5D"><span>Для ванной</span></a></li>
	<li id="menu-item-42914" class="menu-item menu-item-type-custom menu-item-object-custom"><a class="footer__nav-link" href="https://keramavrn.ru/product-category/keramicheskaya-plitka/?filters=vneshnij-vid%5B539%5D"><span>Для кухни</span></a></li>
</ul>
</li>
<li id="menu-item-42908" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat"><a class="footer__nav-link active" href="https://keramavrn.ru/product-category/keramogranit/"><span>Керамогранит</span></a></li>
<li id="menu-item-42909" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat"><a class="footer__nav-link" href="https://keramavrn.ru/product-category/soputstvuyushhie-materialy/"><span>Сопутствующие материалы</span></a></li>
<li id="menu-item-42910" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat"><a class="footer__nav-link" href="https://keramavrn.ru/product-category/mozaika/"><span>Мозаика</span></a></li>
</ul>

class bootstrap_walker extends Walker_Nav_Menu {

    function start_el(&$output, $object, $depth = 0, $args = Array(), $current_object_id = 0) {

        global $wp_query;
        $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';

        $dropdown = $args->has_children && $depth == 0;

        $class_names = $value = '';

        // If the item has children, add the dropdown class for bootstrap
        if ( $dropdown ) {
            $class_names = "dropdown ";
        }

        $classes = empty( $object->classes ) ? array() : (array) $object->classes;

        $class_names .= join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $object ) );
        $class_names = ' class="'. esc_attr( $class_names ) . '"';

        $output .= $indent . '<li id="menu-item-'. $object->ID . '"' . $value . $class_names .'>';

        if ( $dropdown ) {
          <b>  $attributes = ' href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"';</b>
        } else {
            $attributes  = ! empty( $object->attr_title ) ? ' title="'  . esc_attr( $object->attr_title ) .'"' : '';
            $attributes .= ! empty( $object->target )     ? ' target="' . esc_attr( $object->target     ) .'"' : '';
            $attributes .= ! empty( $object->xfn )        ? ' rel="'    . esc_attr( $object->xfn        ) .'"' : '';
            $attributes .= ! empty( $object->url )        ? ' href="'   . esc_attr( $object->url        ) .'"' : '';
        }

        $item_output = $args->before;
        $item_output .= '<a class="footer__nav-link"'. $attributes .'><span>';
        $item_output .= $args->link_before .apply_filters( 'the_title', $object->title, $object->ID );
        $item_output .= $args->link_after;

        // if the item has children add the caret just before closing the anchor tag
        if ( $dropdown ) {
            $item_output .= ' <b class="caret"></b>';
        }
        $item_output .= '</span></a>';

        $item_output .= $args->after;

        $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $object, $depth, $args );
    } // end start_el function

    function start_lvl(&$output, $depth = 0, $args = Array()) {
        $indent = str_repeat("\t", $depth);
        $output .= "\n$indent<ul class='submenu' role='menu'>\n";
    }

    function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ){
        $id_field = $this->db_fields['id'];
        if ( is_object( $args[0] ) ) {
            $args[0]->has_children = ! empty( $children_elements[$element->$id_field] );
        }
        return parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
    }
}


$attributes = ' href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"';
  • Вопрос задан
  • 64 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы