WordPressでは、通常のHTMLページと同じようにJavascriptを使用する事ができます。

しかし、jQueryを使う場合には特別な注意が必要で、気を付けないと正常に動作しません。
ここでは、WordPressでjQueryを使うための3つのポイントを紹介します。

1. jQueryはデフォルトでロードされる

WordPressでは、jQueryがデフォルトでロードされます。

WordPressで生成されるhead部分

テンプレート内にwp_head関数が正しく配置されていれば、jQueryのライブラリは自動的にロードされます。
もし、wp_head関数を配置していなければ、忘れずにhead要素の閉じタグ</head>の直前に配置しましょう。

jQueryライブラリは一度だけロードされていれば良いので、新たにjQueryライブラリ(jquery.jsまたはjquery.min.js)をロードする<script>タグを書く必要はありません。

もし、誤って書き足してしまうと、jQueryライブラリが2重にロードされ、誤動作を起こします。

× jquery.js, jquery.min.js をロードするscriptタグは書き足さない

jQueryライブラリのロードは、WordPressによる自動のロードに任せましょう。

2. jsファイルのロードには、scriptタグは使わずにwp_enqueue_script関数を使う

jQueryライブラリは<script>タグでロードしない事は前述しましたが、jQueryライブラリ以外をロードする場合にも、自分で<script>タグは書かずに、必ずwp_enqueue_script関数を使ってください。
wp_enqueue_script関数の詳しい使い方は、こちらの記事を参照してください。(記事: Javascriptファイルをロードする

以下は、自作のスクリプトsite.jsで、jQueryプラグインのColorboxを使用する例です。

通常のHTMLではこう書くところを…

WordPressテンプレートではこう書く

jQueryライブラリやプラグインを使用する場合、スクリプトを正しい順番でロードする必要があるので、wp_enqueue_scriptの第3引数(array('jquery')などの箇所)は正確に設定するように気を付けてください。

3. スクリプトで「$」を使う時の注意

WordPressでjQueryを使う場合に最も気を付けなくてはならないのは、jQueryオブジェクトの$がスクリプト内で通常通りに使用できない事です。

この問題を解決する方法を説明します。

無名関数でラップする

スクリプトの全て(または一部)を無名関数でラップします。
スクリプトの前後に、1行ずつコードを追加するだけです。

通常はこの方法でOKでしょう。

無名関数を使わない方法

WordPressでjQueryの$が使用できないのは、prototype.js$など、他のライブラリとのコンフリクトを防ぐためです。
無名関数でラップする方法を用いると、このコンフリクトを起こす原因になります。

また、無名関数では変数のスコープに問題が生じる場合もあります。

これらの問題が生じそうな場合には、安全策として以下のような方法があります。

 まとめ

  • jQueryライブラリのロードは、WordPressに自動でおまかせする
  • それ以外のスクリプトのロードは、必ずwp_enqueue_script関数を使用する
  • スクリプトで$を使う場合には無名関数でラップする