Blog

WordPressでテーマからJavascriptやCSSを読み込む書き方まとめ

Posted by admin at 12:29 日時 2012/03/26

WordPressでテーマを作る場合、Javascriptや外部CSSを使うことも多いと思いますが、テーマのheader.phpに直接書くのではなく、functions.phpから一括で管理する方法です。

WordPressでは、キューに追加されたJavascriptやCSSを wp_head() や wp_footer() の位置で、自動的に適切な順番で出力してくれます。特にjQueryなどのライブラリやjQueryプラグインを使用する場合は、複数のjsファイルに依存関係が発生し、読み込む順番が決まってくる場合があります。こういう時でも、一括管理していればあとあとで変更が楽になります。こんな感じ。

/**   * スクリプトとスタイルをキューに入れる   */  function my_scripts() {    // 管理画面では読み込まない  if ( !is_admin() ) {    // スタイルシートディレクトリーを取得する。この方法だと子テーマでもそのまま使える  $dir = get_stylesheet_directory_uri();    // テーマのjsディレクトリーのmy-script.jsをキューに入れる。  // さらに、jQueryに依存するのでjQueryの後で入れるように指定した場合。  wp_enqueue_script( 'my-script', $dir.'/js/my-script.js', array('jquery'));    // jQueryをGoogleがホストするものに差し替える  wp_deregister_script( 'jquery' );  wp_register_script( 'jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js' );    // Google Maps APIを読み込む  // 豆: 第3引数にNULLを入れると末尾に余計な ?ver=xxx が付かない  wp_enqueue_script( 'google-maps-api', 'http://maps.google.com/maps/api/js?sensor=false', array(), NULL );    // テーマのjsディレクトリーのmy-map.jsをキューに入れる。  // jQueryとGoogle Maps APIの両方に依存するので、配列で両方を指定した場合。  wp_enqueue_script( 'my-map', $dir.'/js/my-map.js', array('jquery','google-maps-api'));    // <head>タグ内ではなく</body>直前にスクリプトを出したい場合は、第4引数にtrue  wp_enqueue_script( 'my-footer', $dir.'/js/my-footer.js', array(), false, true );    // 特定のページでスクリプトを出したい場合  if ( is_front_page() ) {  	wp_enqueue_script( 'my-top', $dir.'/js/my-top.js' );  }    // 不要なスクリプトをキューから外す(親テーマやプラグインで要らないのがあったとき等)  wp_dequeue_script( 'parent-script' );    // スタイルシートも基本同じように使えます。  wp_enqueue_style( 'my-css', $dir.'/css/my-css.css' );    // 不要なスタイルをキューから外す(親テーマやプラグインで要らないのがあったとき等)  wp_dequeue_style( 'parent-style' );    }    }  add_action( 'wp_enqueue_scripts', 'my_scripts', 50 );

この機能の解説はググると色々あるのですが、コード・スニペットとして使いたかったのでまとめてみました。functions.phpから使う想定にしています。wp_enqueue_scriptsフックで親テーマがキューを追加している際は、add_actionの第3引数でプライオリティを下げて(数値としては増やして)あげれば、子テーマから改変することもできます。

Codex

参考記事


Share this entry