Наведение курсора на пункт меню верхнего уровня WordPress и Bootstrap и ссылка на URL

#jquery #wordpress

#jquery #wordpress

Вопрос:

Это то, чего я пытаюсь достичь.

Сделайте ссылку на пункт меню начальной загрузки верхнего уровня на страницу, но также отобразите подменю при наведении.

Я нашел некоторый код, который я добавил в свою дочернюю тему function.php . Это делает ссылку доступной для просмотра, но щелчок вызывает появление подменю. Я хочу, чтобы подменю появлялось, но только при наведении курсора мыши, а затем щелчок открывает страницу пункта меню.

Я не программист, поэтому, если кто-нибудь может взглянуть и посмотреть, что не так, я был бы очень благодарен.

Вот код, который у меня есть до сих пор:

 function  custom_nav_menu_link_attributes( $atts, $item, $args ){
  if ( !wp_is_mobile() amp;amp; $args->has_children  ) {
            $atts['href'] = ! empty( $item->url ) ? $item->url : '';
    }
  return $atts;
}

add_filter( 'nav_menu_link_attributes', 'custom_nav_menu_link_attributes', 99, 3 );

function func_make_menu_clickable(){
if ( !wp_is_mobile() ) { ?>
  <script type="text/javascript">
    jQuery(document).ready(function($){      
      if($(window).width() >= 767){
        $('li.menu-item a').click(function(){
          window.location = $(this).attr('href');
        });
      }
    });
  </script>
  <style type="text/css">
  @media all and (min-width: 767px) {
  .menu-item-has-children:hover > ul {
  display: block;
}
}
  </style>
<?php }
}
  

Спасибо

D

Комментарии:

1. Это не очень понятно. Пожалуйста, рассмотрите возможность добавления HTML-части и другого CSS, если таковые имеются. Кроме того, похоже, что это та часть, в которой заключается ваша логика, поэтому, пожалуйста, проверьте условия «если», если они являются преднамеренными: If ($ (window) . ширина() >= 767){ $(‘ li.меню-пункт a’).щелкните (функция(){ окно. location = $(this).attr(‘href’); }); }

2. как вы вызываете func_make_menu_clickable

Ответ №1:

Я нашел ответ, но он добавляет еще один вопрос…

После долгих проб и ошибок я нашел решение.

Я нашел следующий дополнительный код и добавил его в установленный мной плагин под названием custom JS и CSS:

 jQuery(document).ready(function( $ ){
jQuery(function($) {
    if($(window).width()>769){
        $('.navbar .dropdown').hover(function() {
            $(this).find('.dropdown-menu').first().stop(true, true).delay(250).slideDown();

        }, function() {
            $(this).find('.dropdown-menu').first().stop(true, true).delay(100).slideUp();

        });

        $('.navbar .dropdown > a').click(function(){
            location.href = this.href;
        });

    }
});
});
  

Каким-то образом мои ссылки верхнего уровня теперь ссылаются на страницы, и когда я навожу на них курсор, отображается подменю.

Если я удалю начальный код в моем functions.php файл и / или деактивируйте приведенный выше js-код, тогда элементы верхнего уровня не будут ссылаться на страницу. Кажется, каждый фрагмент кода нуждается друг в друге для работы. Я не программист, поэтому не могу сказать вам, почему.

Единственная небольшая корректировка, которую я хотел бы внести сейчас, и это новый вопрос, заключается в том, что в идеале я хотел бы, чтобы пункт меню верхнего уровня не ссылался на страницу, когда веб-сайт находится на мобильном устройстве (я знаю, именно поэтому код начальной загрузки такой, какой он есть).

В любом случае, по крайней мере, я решил половину своей проблемы.

Спасибо всем, кто даже потрудился прочитать это…

D