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

Подсветка активного пункта меню wordpress?

Добрый день!

Несколько дней ломаю голову, как реализовать эту функцию в "кастомном" меню с якорями.
Знатоки, подскажите, куда смотреть и что поменять.

Ввод меню в хидер
<div class="catalog_menu">
    <div class="container">


        <?php
        wp_nav_menu( array(
            'theme_location'  => 'second',
            'menu'            => 'main_menu',
            'container'       => 'div',
            'container_class' => '',
            'container_id'    => '',
            'menu_class'      => 'catalog_menu_wrap',
            'menu_id'         => '',
            'echo'            => true,
            'fallback_cb'     => 'wp_page_menu',
            'before'          => '',
            'after'           => '',
            'link_before'     => '',
            'link_after'      => '',
            'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>',
            'depth'           => 0,
            'walker'          => '',
        ) );
        ?>

    </div>
</div>

На странице
<div class="cat_menu">
 <?php if(pll_current_language() == 'en') { ?>
    <?php
      wp_nav_menu(array(
        'theme_location' => 'primary_cat',
        'menu_class' => 'menu',
        'menu' => 'меню_категорий_en',
        'container' => false
      ));
      ?>
    <?php  }
else if(pll_current_language() == 'ru') { ?>
<?php
      wp_nav_menu(array(
        'theme_location' => 'primary_cat',
        'menu_class' => 'menu',
        'menu' => 'меню_категорий',
        'container' => false
      ));
      ?>
          <?php  }  
        ?>   

</div>

<div class="cat_items">
    <?php
$_terms = get_terms( array(
    'taxonomy'     => 'catalog_category',
    'orderby'      => 'name',
    'order'        => 'DESC',
) );

foreach ($_terms as $term) :

    $term_slug = $term->slug;
    $_posts = new WP_Query( array(
                'post_type'         => 'catalog',
                'tax_query' => array(
                    array(
                        'taxonomy' => 'catalog_category',
                        'field'    => 'slug',
                        'terms'    => $term_slug,
                    ),
                ),
            ));


    if( $_posts->have_posts() ) :

        echo '<div id="'. $term->slug .'" class="cat_item">';
        echo '<h2 class="cat_title">'. $term->name .'</h2>';
        echo '<div class="cat_desc">';

Скрол к якорю
<script>
    $(function(){
  $('a[href^="#"]').on('click', function(event) {
    event.preventDefault();

    var sc = $(this).attr("href"),
        dn = $(sc).offset().top - 100;
    $('html, body').animate({scrollTop: dn}, 1000);
  });
});
</script>
  • Вопрос задан
  • 199 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Loftschool
    Комплексное обучение PHP
    6 недель
    Далее
  • Яндекс Практикум
    Фулстек-разработчик расширенный
    20 месяцев
    Далее
  • Stepik
    Верстка и веб-разработка сайтов. Продвинутый уровень Web Develop
    2 недели
    Далее
Решения вопроса 1
@Asokr
Ну, если есть -
<script>
    $(function(){
  $('a[href^="#"]').on('click', function(event) {
    event.preventDefault();

    var sc = $(this).attr("href"),
        dn = $(sc).offset().top - 100;
    $('html, body').animate({scrollTop: dn}, 1000);
  });
});
</script>

Не вариант по этому же клику просто добавлять класс куда нужно, например на саму ссылку:
$(this).addClass('currentActive');

Если нужно только на пункт меню, можете по условию добавлять класс через JS, или задать стили для класса только меню....
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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