0

Я создаю сайт на основе Wordpress, и все мои скрипты используют jQuery 2.1.4.реализация jQuery - не все скрипты хорошо работают

Проблема в том, что когда я реализую jQuery в разделе <header>, тогда работает «прокрутка вверх», но навигация (Bootstrap navwalker) нет. Когда я реализую jQuery в functions.php, тогда навигация работает, но «прокрутка вверх» не работает!

Я попытался использовать другую версию jQuery для прокрутки вверх с помощью noConflict, но затем nav не работает.

Я попытался также переместить все мои скрипты сразу после <body> и <?php wp_head(); ?>, но он также не работает.

И когда я реализую jQuery как в секции <head>, так и в functions.php (только для теста), навигатор не работает.

Код (как этого СЧА работ и выделите верхний не работает):

<head> 
<meta charset="utf-8"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<title><?php bloginfo('name'); ?> <?php wp_title(); ?></title> 


<!-- scroll to top--> 
<script> 
$(document).ready(function(){ 

    $(window).scroll(function(){ 
     if ($(this).scrollTop() > 100) { 
      $('.scrollToTop').fadeIn(); 
     } else { 
      $('.scrollToTop').fadeOut(); 
     } 
    }); 

    $('.scrollToTop').click(function(){ 
     $('html, body').animate({scrollTop : 0},800); 
     return false; 
    }); 

}); 
</script>  


<?php wp_head(); ?>  

functions.php

<?php 
/* Theme setup */ 
add_action('after_setup_theme', 'wpt_setup'); 
    if (! function_exists('wpt_setup')): 
     function wpt_setup() { 
      register_nav_menu('primary', __('Primary navigation', 'wptuts')); 
     } endif; 


add_action('wp_enqueue_scripts', 'add_my_script'); 
function add_my_script() { 
    wp_enqueue_script('jquery-2.1.4.min.js', get_template_directory_uri() . '/js/jquery-2.1.4.min.js'); 
} 
add_action('wp_enqueue_scripts', 'add_my_script'); 



function wpt_register_js() { 
    wp_register_script('jquery.bootstrap.min', get_template_directory_uri() . '/js/bootstrap.min.js', 'jquery-2.1.4.min.js'); 
    wp_enqueue_script('jquery.bootstrap.min'); 
} 

add_action('init', 'wpt_register_js'); 
function wpt_register_css() { 
    wp_register_style('bootstrap.min', get_template_directory_uri() . '/css/bootstrap.min.css'); 
    wp_enqueue_style('bootstrap.min'); 
    wp_enqueue_style('my_template', get_template_directory_uri() . '/style.css'); 
} 
add_action('wp_enqueue_scripts', 'wpt_register_css');   

// Register custom navigation walker 
    require_once('wp_bootstrap_navwalker.php'); 
?> 

Кодекса Nav

<nav class="navbar navbar-default" role="navigation"> 
    <!-- Brand and toggle get grouped for better mobile display --> 
    <div class="navbar-header"> 
     <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"> 
     <span class="sr-only">Toggle navigation</span> 
     <span class="icon-bar"></span> 
     <span class="icon-bar"></span> 
     <span class="icon-bar"></span> 
     </button> 
    </div> 
    <!-- Collect the nav links, forms, and other content for toggling --> 
    <div class="collapse navbar-collapse navbar-ex1-collapse"> 
     <?php /* Primary navigation */ 
     wp_nav_menu(array(
      'menu' => 'Menu 1', 
     'depth' => 2, 
     'container' => false, 
     'menu_class' => 'nav navbar-nav', 
     //Process nav menu using our custom nav walker 
     'walker' => new wp_bootstrap_navwalker()) 
     ); 
     ?> 
    </div> 
    </nav> 

Порядок вывода <script> теги:

<script type='text/javascript' src='.../wp-content/themes/tyszka/js/bootstrap.min.js?ver=4.2.2'></script> 
<script type='text/javascript' src='.../wp-includes/js/jquery/jquery.js?ver=1.11.2'></script> 
<script type='text/javascript' src='.../wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script> 
<!-- some plugin stuff here--> 

<link rel="EditURI" type="application/rsd+xml" title="RSD" href=".../xmlrpc.php?rsd" /> 
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href=".../wp-includes/wlwmanifest.xml" /> 
<meta name="generator" content="WordPress 4.2.2" /> 

    <!-- scroll to top--> 
    <script> 
    $(document).ready(function(){ 

     //Check to see if the window is top if not then display button 
     $(window).scroll(function(){ 
      if ($(this).scrollTop() > 100) { 
       $('.scrollToTop').fadeIn(); 
      } else { 
       $('.scrollToTop').fadeOut(); 
      } 
     }); 

     //Click event to scroll to top 
     $('.scrollToTop').click(function(){ 
      $('html, body').animate({scrollTop : 0},800); 
      return false; 
     }); 

    }); 
    </script>  


    </head> 
+0

Где находится 'functions.php'? Как выглядит навигационный код? Можно ли воспроизвести проблему в [JsFiddle] (http://jsfiddle.net/)? – psycotik

+0

functions.php автоматически включается в WordPress, мне не нужно его реализовывать в разделе ''. Я думаю, было бы довольно сложно воспроизвести его в JsFiddle из-за этого functions.php и navwalker ... Я добавил навигационный код к вопросу – Dandy

+1

Получаете ли вы какие-либо ошибки в консоли в обоих случаях? – Arcanyx

ответ

0

Keep код, как это!

Просто сделайте небольшое изменение. Поместите <?php wp_head(); ?> перед вашим скриптом прокрутки.

Не включайте лишние файлы jQuery. Я чувствую, что это должно сделать трюк!

Дайте нам знать!

EDIT:

Ехали через ваш сайт, и это то, что приходит на ум. 1. Bootstrap нагрузки перед тем расслоение плотной JQuery 2. Есть 2 JQuery файлов в коде

Так что я не очень эксперт в Wordpress, но я откопал что-то, Есть функции wp_register_script и wp_enqueue_script Оба этих функции были использованы вами в приведенном выше коде, но в этих функциях есть третий параметр, который принимает массив и используется для передачи зависимостей. Link 1

Если вы передаете jquery в массиве, я думаю, что ваша проблема должна быть решена! Надеюсь, что это поможет!

+0

Спасибо за комментарий. Однако, как я уже сказал, я уже пробовал это, и он не работает. – Dandy

+0

Когда вы пишете свой код (как упоминалось в вопросе), можете ли вы получить какие-либо ошибки в консоли? – Arcanyx

+0

Да, я знаю. 'Uncaught Error: JavaScript для Bootstrap требуется jQuery 75 Uncaught TypeError: undefined не является функцией' (здесь начинается моя прокрутка вверх) – Dandy

Смежные вопросы