WordPressにはもともとjQueryの本体があるのですが、これを
などに変える場合、WordPressの管理画面内のjsで動いていた部分に不具合が生じるようです。
それを回避するために、WordPressの管理画面でのjQuery本体は変えず、WordPress本体のjQueryを変える方法です。
WordPressのテーマフォルダにfunctions.phpファイルを作成しておきます。
CDN 【 Contents Delivery Network 】 コンテンツデリバリネットワーク
CDNとは、ファイルサイズの大きいデジタルコンテンツをネットワーク経由で配信するために最適化されたネットワークのこと。CDNを構築・運用し、企業などに有料で利用させるサービスをコンテンツデリバリサービス(CDS)という。
狭義にはデジタルコンテンツの大量配信に対応したネットワークを指し、広義にはファイルの配布ポイント管理から課金・認証システムまで、デジタルコンテンツの配布や販売に必要な機能をひととおり揃えたシステムを指す。
音楽や動画といったデジタルコンテンツは、従来インターネット上で流通してきたHTMLファイルなどと比べてサイズが大きく、ネットワーク越しで配信を行うとネットワークに多大な負荷がかかってしまう。
このとき、ネットワーク上のさまざまな場所にデジタルコンテンツの配布ポイントを用意し、ユーザのネットワーク位置に応じた最適な配布ポイントを指示することで、大容量のコンテンツをスムーズにユーザに配信できるようになる。
このようなシステムを構築して、多数のユーザにデジタルコンテンツを配信されるよう設計されたネットワークのことをコンテンツデリバリネットワークという。
さらに、(狭義の)コンテンツデリバリネットワークの機能に加えて、デジタルコンテンツをインターネット経由で販売するといった場合に必要となる課金処理などの機能も一体化した、高付加価値型のコンテンツデリバリネットワークも存在する。
このタイプのネットワークでは、主にデジタルコンテンツの販売を希望する企業などが簡単にコンテンツ販売ビジネスに参入できるよう、あらかじめ一通りの需要に対応した高機能なネットワークを構築してあるものが多い。
このような意味合いで「コンテンツデリバリネットワーク」という言葉が使われる場合には、クライアント企業の参入を誘うマーケティング用語の色彩も伴うが、単に配布の方法を工夫してあるネットワークという、技術用語としての意味も同時に持ち合わせた単語である。
GoogleのCDN(Content Delivery Network)からjQuery本体を読み込む場合
GoogleのCDNにホストされているライブラリのjQueryを読み込む場合の記述。
Google Developerの真ん中ぐらいにあるjQuery本体のコード(今回は1.x snippet:を使ってます。)
functions.php
// (!is_admin())で管理画面じゃない時
if ( !is_admin( ) ) {
// WordPress本体やプラグイン等であらかじめ登録されているJavascriptのフックを解除する
wp_deregister_script( 'jquery' );
// GoogleのCDN(Content Delivery Network)にホストされているライブラリのjQuery本体に変更する
wp_enqueue_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js', array( ), '1.11.3');
}
}
// 上記の関数をWordPress に”フック”、もしくは”登録(register)”する
add_action( 'init', 'load_cdn');
自分で用意したjQuery本体を読み込む場合
テーマフォルダの下に「js」フォルダがあり、その中にファイル(jQuery本体)がある場合の記述。
functions.php
<?php
function load_jquery_from_local( ) {
// (!is_admin())で管理画面じゃない時
if ( !is_admin( ) ) {
// WordPress本体やプラグイン等であらかじめ登録されているJavascriptのフックを解除する
wp_deregister_script( 'jquery' );
// jsフォルダの中のjQuery本体に変更する
wp_enqueue_script( 'jquery', get_bloginfo( 'stylesheet_directory' ) . '/js/jquery.js', array( ), '1.10.2');
}
}
//上記の関数をWordPress に”フック”、もしくは”登録(register)”する
add_action( 'init', 'load_jquery_from_local');
WordPressのフックなどに関しては下記サイトが詳しいです。
WordPressをカスタマイズするなら覚えておきたいアクションフックとフィルターフック
今回、使用したWordPressの関数
wp_deregister_script( $handle );
登録スクリプト (javascript)を取り外します。
パラメータ(引数)の説明
- $handle(必須)
- 取り外すスクリプトを指定
用例
<?php wp_deregister_script( 'jquery' ); ?>
WordPressが持つjQueryのスクリプトを解除し、以下URLから独自にコピーもしくは登録するGoogle CDN
wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer );
スクリプトファイルがまだインクルードされていない場合、また、すべての依存するスクリプトが登録済みの場合、依存関係に従った適切なタイミングでファイルを生成されたページにリンクします。
スクリプトのリンクは、wp_register_script( ) 関数ですでに登録済みのハンドル、またはこの関数に必要なパラメータを与えることで行えます。
これは WordPress が生成するページに JavaScript をリンクする際に推奨されている方法です。
パラメータ(引数)の説明
- $handle(string) (必須)
- スクリプトのハンドルとして使われる名称。
特別なケースとして、文字列に '?' という記号が含まれている場合、それより前の部分は登録されたハンドルとして参照され、それより後の部分はクエリストリングとして URL に追加される。
このような特別な場合、バージョンを使用する必要がある。
初期値: なし
- $src (string) (オプション)
- スクリプトの URL。
例: http://example.com/wp-content/themes/my-theme/my-theme-script.js
ローカルスクリプトの URL は絶対に直接書き込むべきではない。
代わりに plugins_url (プラグイン向け) と get_template_directory_uri (テーマ向け) を使って適切な URL を取得する。
リモートのアセットはプロトコルに影響されない URL で指定できる。
例: //otherdomain.com/js/their-script.js
「WordPress に含まれ登録されているデフォルトスクリプト」を参照。
初期値: false
- $deps (array) (オプション)
- このスクリプトが依存する他のスクリプトのハンドル配列、つまり、このスクリプトより前に読み込まれる必要があるスクリプト。
このパラメータは、その $handle のスクリプトが wp_register_script() を使って登録されていない場合のみに必要。
デフォルトのハンドルはすべて小文字。
初期値: array( )
- $ver (string) (オプション)
- クエリストリングとしてファイルパスの最後に連結される、スクリプトのバージョン番号を指定する文字列 (存在する場合) 。
バージョンが指定されていない場合は false に設定され、WordPress は自動的に現在の WordPress のバージョン数と同じバージョン番号を追加する。
null に設定した場合はバージョン番号は追加されない。
このパラメータはキャッシングに関わらず正しいバージョンがクライアントに送信されるようにするために使う。
したがって、バージョン番号があってそれがスクリプトに意味を持つ場合は含めるべきである。
初期値: false
- $in_footer (boolean) (オプション)
- スクリプトは通常 HTML ドキュメントのに置かれるが、もしこのパラメータが true の場合 終了タグの前に配置される。
テーマ内の適切な位置に wp_footer() テンプレートタグが含まれていることが必須となる。
初期値: false
add_action ( 'hook_name', 'your_function_name', [priority], [accepted_args] );
特定のアクションに関数をフックします。
この関数はadd_filter( ) のエイリアスです。
パラメータ(引数)の説明
- hook_name(必須)
- WordPress によって提供されているアクションフックの名称で、関数がどのイベントと関連するのかを示します
- your_function_name(必須)
- hook_name で設定されたイベントに続いて実行させたい関数の名称です。
これは標準の PHP 関数、WordPress コアに含まれる関数、プラグインファイルで定義した関数(自分で作った関数)などです
- [priority]
- 任意の整数の引数で、特定のアクションに関連した関数の実行時の順番を指定することができます(デフォルト: 10)。
数字が小さいほど先に実行され、同じ数字の場合はアクションに追加された順番で実行されます
- [accepted_args]
- 任意の整数の引数で、関数が取ることのできる引数の数を定義します (デフォルト: 1) 。
フックによっては2つ以上の引数を関数に渡すことができるので、その場合に役に立ちます。このパラメータはリリース 1.5.1 で導入されました
今回はこのへんで。