正常に動作しないプラグインがあって原因を調べて見るとwp_deregister_script(‘jquery’)で一旦削除したあとに、wp_enqueue_script()で’jquery’を登録していなかったためでした。
●そのプラグインでのJavaScriptインクルード
そのプラグインでは、JavaScriptを下記wp_enqueue_script()関数を使ってインクルードしていました。
wp_enqueue_script(‘ハンドル名’, ‘スクリプトのパス’, array(‘jquery’));
上記関数の3番目の引数の意味、このスクリプトが依存するスクリプトのハンドル名を指定していて、これが事前にインクルードされていないとインクルードされないようです。
●jqueryをwp_enqueue_script()を使ってインクルードしていなかった
下記記事にあるように、WordPress添付のjqueryと相性が悪いJavaScriptがあったため、設定を変更していたのです。
ブートストラップ3を使って自作テーマ作成(4)JavaScriptインクルードの設定
header.phpに下記記述をしていました。wp_deregister_script()関数でデフォルトでキューに登録されている’jquery’を削除して、その後、jqueryをwp_enqueue_script()を使ってキューに入れず、直接インクルードさせていました。
<?php wp_deregister_script(‘jquery’); ?>
<script type=”text/javascript” src=”//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js”></script>
jquery自体はインクルードしていたのですが、wp_enqueue_script()を使ってキューに登録していなかったので依存性を判断する際に’jquery’がインクルードされていないと判断されてしまったようです。
テーマだけでなく、プラグインで使用しているJavaScriptも含めて依存性を解決するようにするために、WordPressが推奨しているようにwp_enqueue_scriptを使ってJavaScriptをインクルードした方が良さそうです。
下記のように修正しました。
<?php wp_deregister_script(‘jquery’); ?>
<?php wp_enqueue_script(‘jquery’,’http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js’); ?>