wp_enqueue_scriptで外部のjQueryライブラリを使う

通常のHTMLでjQueryを使う場合、下記のようにライブラリを読み込ませるだけで特に問題はありません。

1
<script type="text/javascript" src="/js/jquery.js"></script>

ところがWordPressでは各種プラグインがさまざまなJavaScriptのフレームワークを使うので、コンフリクト(競合)を起こさないようにグローバル変数を変えていたり、何重にもライブラリを読み込まないようにしたり、適切な順番で読み込んだりするような配慮がなされています。

では自前でスクリプト(今回はjQuery)を設置する場合は、どのようにすればスマートに読み込ますことができるでしょうか。

いろいろ調べていると、wp_enqueue_script()というwp_head()にフックする関数がありました。
これを使うとほかのプラグインなどとは競合せずに、安全にjsライブラリや自前のjsファイルを読み込むようになるようです。

また、WordPressには主要なライブラリが組み込み済みなので、テーマファイル内に自分でライブラリを設置しなくても、この関数を使えば使用できるようになります。

関数は以下のように呼び出します。

1
wp_enqueue_script( $handle, $src = false, $deps = array(), $ver = false );

$handle
スクリプトの識別名
$src(optional)
スクリプトファイルへのパス。http://で始まるURLまたはサイトルートから絶対パス。
$deps(optional)
依存するスクリプトのリスト(配列)
$ver(optional)
スクリプトのバージョン

wp_enqueue_script()の実装例

実際は下記のコードを<head></head>内に読み込ませます。
注意点としては、必ず<?php wp_head(); ?>の前に記述します。そうしなければフックしないのでロードされません。

1
2
3
<?php wp_enqueue_script('jquery'); ?>
<?php wp_enqueue_script('sample','/wp-content/themes/yourthemes/js/sample.js',array('jquery'),'0.1.0'); ?>
<?php wp_head(); ?>

2行目の第3引数に依存するファイルを指定すると、読み込む順番も調整してくれます。

この状態でHTMLソースを見るとファイルを正しく読み込んでいることが確認できますが、前述の通りグローバル変数が変わっているので、自前のjsファイルの中身を修正する必要があります。

WordPressではjQueryという変数名でアクセスするので、$jQueryにすべて修正します。これで正しく動作するはずです。

すべて置換するのが面倒だったりする場合は、自前のfunctionだけ$でアクセスできるように下記のコードで括ります。

1
2
3
4
5
6
7
8
jQuery(document).ready(function($) {
 
	//下のfunction内だけ$が有効
	$(document).ready(function() {
		alert("サンプルコード");
	});
 
});
Function Reference/wp enqueue script << WordPress Codex(英語)

ブックマーク・共有

  • ブログのフィードを取得する
  • このエントリをはてなブックマークに登録
  • このエントリをDeliciousに登録
  • このエントリをDiggに投稿
  • このエントリをStumbleUponに投稿
  • このエントリをTechnoratiに投稿
  • このエントリをFaceBookに投稿
  • このエントリをRe Tweet

トラックバック URL


内容への言及のないもの等は削除する場合があります。

0 コメント (コメントはまだありません)

この記事へのコメント


(コメントは承認後に公開されます)

Masayoshi プロフィール

Masayoshi

好きなもの:アイコン、インターフェース、Android、Mozilla全般、しょう油、ランチパックjQuery、写真撮影、SMASHING MAGAZINE、コーヒー、緑茶、沖縄

スキル:Webデザイン、名刺デザイン、ロゴデザイン、広告制作、XHTML、CSS、JavaScript、PHP、Flash、EC-CUBE、WordPress、Movable Type、Typepad、Apache(少し)

TwitterTwitter

  • ヤバすぎる RT @gosan すげえw 広大なスケールと奇抜な発想力だなぁw 【iLike】 http://bit.ly/cTVYEV 1 週間前
  • ココイチで注文を聞きにきた女の人、めっちゃ顔の位置近いんだけど‥ 1 週間前
  • 買ったDesire用ケース(というかスリーブ)hTcのロゴと黄色のステッチがステキ。 http://tinyurl.com/24q3ftn 1 週間前
  • Desire用のケースがきてたーーーー!!発注して1ヶ月ちょい。Royal Mail(イギリスの郵便局的な)できてた。 1 週間前
  • ESTAの取得が9月8日から有料化(14ドル)されるらしい。なんてタイムリー!急いで取得しよう。 2 週間前
  • もっと見る...
Twitter Button

お問い合わせ