wp_head 内の jQuery を読み込まないように wp_deregister_script を使用した場合の注意点。
このブログでは関係ないのですが、WordPress で作ったとあるサイトで Biz Calendar を使用したところ、wp_head 内でデフォルトの jQuery が読み込まれるようになりました。
ただ自分はいつも header.php に Google API から読み込むタグを書いているので、このデフォルトのは必要なし。
自動で読み込まれるなら header.php に書かなければいいじゃんって話ですが、なんか、こぉ、いまいちしっくりこないと言うか…。
それにデフォルトのバージョンが 1.12.4 と古く、今後「新しいのじゃないと動かないのがあるッ。」って時に困るかもしれないので、今のうちから解決しておこうかなと。
ここから続き
wp_deregister_script を使用すれば jQuery が読み込まれない。
「wp_head jquery」で検索したらすぐ出てきました。
関数 wp_deregister_script(); と使用すれば良いと。
「もぉ解決したぜッ。」と思ったのもつかの間、確かに jQuery は読み込まれなくなったのですが、カレンダー表示に必要な calendar.js とかも読み込まれなくなり、カレンダー自体が表示されなくなってしまいました…(°⌓°)
wp_deregister_script で消したら wp_enqueue_script で読み込む。
もう少し調べたところ wp_deregister_script(); で読み込まないようにしたら、wp_enqueue_script(); で任意の jQuery を読み込めばイイっぽい。
この2つの関数については、下記サイトが参考になるかと。
関数リファレンスwp enqueue script - WordPress Codex 日本語版
wp_register_scriptとwp_enqueue_scriptの使い方とその違いとは
で、自分の場合は↓になりました。
- header.php
-
<?php wp_deregister_script('jquery'); wp_enqueue_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', array(), '1.7.2'); wp_head(); ?>
wp_enqueue_script の引数「$src」以降は必須じゃない様なんですが、関数リファレンスに書いてある通り「$ver」の部分を書かないと WordPress のバージョンが表示されてしまうため、なんとなくセキュリティ的に良くないかなぁ~ということでバージョンも記述しています。
ちなみに、header.php ではなく functions.php に記述する方法でも良いようですが、それだと管理画面にまで影響があるようなので header.php に書くようにしました。
ログインしてる状態だと jQuery は読み込まれてる。
冒頭、このブログとは関係ないと言いつつも、実は WordPress の管理画面にログインしている状態でブログを表示すると、wp_head 部分にデフォルトの jQuery が読み込まれます。
管理画面にログインするのは自分だけなので特に問題ないのですが、せっかくなので webruary もデフォルトを読み込まないようにしてみました。
↓が初期状態。(クリックで拡大します)
20行目が header.php に直接書いてある jQuery を読み込んでる箇所。
そしてログインした状態。
22~25行目が wp_head で出力されている部分。
24行目でしっかり jQuery が読み込まれています。
で修正後。
ちゃんと読み込まないようになりました。
22行目の jquery-option.js の位置が変わってるのは、jQuery 本体を先に読み込ませるため。お察しください。
これでスッキリしました。
Comment Form