ホームページの修正をしていたら、急にslickが読み込めなくなった!なぜ?
ワードプレスでjQueryが動作しないとき
Uncaught TypeError: $(…).slick is not a function
こんなエラーが出て、急にslickを読み込めなくなりました。
どうも、ワードプレスに同梱されている、jQueryと競合してしまったようです。
ワードプレス同梱のjQueryを消すとき
ワードプレス同梱のjQueryの消し方。
<?php wp_deregister_script( 'jquery' ); ?>
<?php wp_head(); ?>
<?php wp_deregister_script( 'jquery' ); ?>
<?php wp_deregister_script(‘jquery’); ?> これを <?php wp_head(); ?> より前に書くと、ワードプレス同梱のjQueryを読み込みません。
でも今まで、普通に読み込めてたのに、なぜ急に読み込めなくなったのだろう?
そういえば作業していたとき、<?php wp_head(); ?> がうまく読み込まれてなかったので、修正しました!きっとそれが原因です。
ワードプレス同梱のjQueryを読み込むとき
逆に、ワードプレス同梱のjQueryを読み込むときは、<?php wp_enqueue_script(‘jquery’); ?> を <?php wp_head(); ?> の前に書きます。
<?php wp_enqueue_script( 'jquery' ); ?>
<?php wp_head(); ?>
参考サイト https://goodsan.jp/wp/wordpressjquery/
jQueryのコードを調整する
jQueryのコードも、そのままでは読み込まないため、少し調整する必要があります。
コード全体を jQuery(function($){ }); で囲みます。
$(function() { で囲っている部分を jQuery(function() { に書き換えます。
jQuery(function($){
var $nav = $('#navArea');
var $btn = $('.toggle_btn');
var $mask = $('#mask');
var open = 'open'; // class
// menu open close
$btn.on( 'click', function() {
if ( ! $nav.hasClass( open ) ) {
$nav.addClass( open );
} else {
$nav.removeClass( open );
}
});
// mask close
$mask.on('click', function() {
$nav.removeClass( open );
});
});
参考サイト https://briarpatch.co.jp/wp-jquery
その他の要因
そのほか、動作しなかったとき。私の場合 <?php wp_footer(); ?> の記述を忘れてたときも、動作しませんでした。scriptのコードもそこに書いてるので、動作しないのは当たり前ですね・・
あと管理画面バーも <?php wp_footer(); ?> の記述がないと、表示されないようです。もしバーが出てないときは、確認した方がよさそうです。
まとめ
jQueryが動作しないときの、確認事項。
headタグ内に、同梱のjQueryを読み込むか、読み込まないかのコードを書く。
jQueryのコードを書き換えて調整する。
footerがちゃんと読み込まれてるか確認する。