На мульти сайте wordpress не работает JQuery script, который при скроле должен прибивать меню к верху

Есть такая проблема: Когда верстал сайт , этот скрипт работал

$(document).ready(function(){
    var $menu = $("#menu");
        $(window).scroll(function(){
        if ( $(this).scrollTop() > 180 && $menu.hasClass("default") ){
              $menu.removeClass("default").addClass("fixed");
        } else if($(this).scrollTop() <= 180 && $menu.hasClass("fixed")) {
               $menu.removeClass("fixed").addClass("default");
         }
    });//scroll
 });

JQ был подключен

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

После того как перевел сайт на Wordpress скрипт перестал работать. Я использовал такое подключение

add_action( 'wp_enqueue_scripts', 'my_jquery_scripts' );
function my_jquery_scripts() {
    wp_deregister_script( 'jquery' );
    wp_register_script( 'jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js');
    wp_enqueue_script( 'jquery' );
} 

Но не помогло P.S script расположен в footer


Ответы (1 шт):

Автор решения: KAGG Design

Скрипты должнгы быть в отдельных файлах и подключаться через wp_enqueue_script() с зависимостью от jquery. Подробнее здесь.

Сам jquery трогать не надо, в последней версии WordPress уже подключен jquery 3.5.1.

WordPress подключает jquery в noconflict mode, поэтому первая строчка должна выглядеть так:

jQuery(document).ready(function($){

Таким образом:

  1. Вынесите ваш скрипт в отдельный файл в папке темы. Назовите его, скажем, assets/js/scroll.js
  2. Замените в нём первую строчку на указанную выше.
  3. Запустите этот скрипт.
/**
 * Enqueue my scripts.
 */
function my_jquery_scripts() {
    wp_enqueue_script(
        'my-scroll',
        get_stylesheet_directory_uri() . '/assets/js/scroll.js',
        [ 'jquery' ],
        '1.0.0',
        true
    );
}

add_action( 'wp_enqueue_scripts', 'my_jquery_scripts' );
→ Ссылка