На мульти сайте 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($){
Таким образом:
- Вынесите ваш скрипт в отдельный файл в папке темы. Назовите его, скажем,
assets/js/scroll.js - Замените в нём первую строчку на указанную выше.
- Запустите этот скрипт.
/**
* 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' );