- 表示高速化
- 更新日:
WordPressでJavaScriptを用いる際、どうやって読み込めばいいかわからなくなってしまうことがあると思います。
特に表示高速化にも気を遣うなら、この辺は必須ですよね。
この記事では
- そもそもWordPressでどうやってJavaScriptやそのライブラリを用いたファイルを読み込むのかわからない。
- PageSpeed Insightsのスコアが悪く、JavaScriptの読み込みを改善したいけど、どうしていいかわからない。
こんな悩みに答えていければと思います。
サイトリニューアルを検討されている方は、こちらの記事をご覧ください。
目次
そもそも読み込み方に3種類ある
最初に、WordPress内でのJavaScriptの読み込み方法の種類について説明していきます。
もっと細かく分けることもできますが、ここでは大きく3種類で分けようと思います。
1,テンプレートに直接記述して読み込み
まずはWordPressテーマのテンプレートに記述する方法です。
よくあるのが、head内に<script>タグを記述して読み込んでいるパターンです。
<script src=”<?php echo get_template_directory_uri(); ?>/something.js” ></script>
後述しますが、正直なところ、表示が遅くなる可能性があるので、オススメはしません。
2,WordPressに内在する関数を用いて読み込み
2つ目はWordPressにある関数を用いて読み込む方法です。
具体的にはwp_enqueue_scriptsという関数を読み込みます。
functions.phpに下記のように読み込みます。
例
function read_js(){ wp_enqueue_script( ‘something’, get_stylesheet_directory_uri() . '/something.js',['jquery']); } add_action('wp_enqueue_scripts', 'read_js');
第一引数にスクリプトのハンドルとして使われる名前、
第二引数にJavasScriptファイルのURLを指定します。
注意があるとすれば、第三引数です。
ここに事前に読み込む必要のあるスクリプトを指定しておく必要があります。
実際にはjQueryを使用しているファイルを読み込む際に、第三引数に’jQuery’を含めた配列が記述がされることが多いです。
もちろん他にもライブラリを使用しているなら、それを事前に読み込むファイルとして指定しておく必要があります。
なお、他にも引数で指定できる項目があるので、関数の詳細はこちらをご覧ください。
3,プラグインを用いて読み込み
3つ目はプラグインを用いて読み込む方法です。
「Simple Custom CSS and JS」などが有名です。
管理画面からの管理も容易になり、テーマやコードに関する専門的な知識を持たないでもJavaScriptを反映しやすいのが特徴です。
プラグインをインストールすることで、動作が重くなったり、予期せぬエラーが起きたりする場合もありますので、それは注意です。
では、どう読み込むのが最適か?
ここまで3つの方法を示してきましたが、どうやって読み込めばよいのでしょうか。
管理のしやすさや実装のしやすさ等いろんな観点があるかと思いますが、今回は表示高速化の観点から最適な読み方を説明していきます。
基本のJavaScriptの読み込み方について
そもそもWordPress内だからといって、基本のJavaScriptの読み込み方と本質は何も変わりません。
JavasScriptそのものの読み込み方法についてはこちらの記事で解説しています。
ざっと要点をまとめると、下記のようになります。
- 基本はdefer属性を付与して読み込む
- サードパーティースクリプト等はasyncを使う
- シンプル、インラインはファーストビューで使う
なお、そもそもdeferがわからない等も、上記の記事で解説しているので、参考にしてみてください。
WordPress用にカスタマイズする
あとは、上記の事項をWordPressでも適応させるだけです!
1つ1つ説明していきます。
1,基本はdefer
WordPressでJavaScriptを読み込む際も、基本はdeferを用いた非同期読み込みをします。
なお、テンプレートに直接記述するパターンは基本のJavaScriptの読み込み方と同じなので、WordPressでの関数を用いた読み込み方について解説していきます。
wp_euqueue_script関数で読み込む際、デフォルトではdeferは付与されないので、
フィルターフックを用いて書き換えます。
function add_defer( $tag ) { if (is_admin()){ return $tag; } if ( strpos( $tag, 'jquery.js' ) ){ return $tag; } return str_replace( 'src', 'defer src', $tag ); } add_filter( 'script_loader_tag', 'add_defer', 10 );
注意点がいくつかあり、まず管理画面では実行しないことです。
is_adminを用いて回避しています。
そしてjQueryも回避します。
jQueryを用いているJavaScriptも全てdeferで読み込むのであれば、jQueryもdeferで読み込んで機能する場合もありますが、不具合に繋がるので、分からなければ避けておくのが無難です。
他のライブラリもdeferで読み込んでうまくいく場合もありますが、基本は避けておくとよいでしょう。
もちろん、他にも避けたい状況があれば、if文を用いて避けておきます。
また、特定のJavaScriptだけdefer属性をつけたい場合は
function add_defer( $tag, $handle ) { // deferで読み込みたいJavaScriptの、wp_enqueue_scriptで指定したハンドル名を指定 if ( 'something' === $handle ){ return str_replace( 'src', ' defer src', $tag ); } return $tag; } add_filter( 'script_loader_tag', 'add_defer', 10, 2 );
のようにif文を用いて、指定するのがよいです。
2,サードパーティースクリプト等はasyncを使う
サードパーティースクリプト等を使う場合はasyncで読み込みます。
基本はdeferの読み込み方法と同じです。
deferのところをasyncに置き換えます。
基本的にはasyncで読み込みたいスクリプトを指定するパターンが多いでしょう。
function add_async( $tag, $handle ) { // asyncで読み込みたいJavaScriptのwp_enqueue_scriptに指定したハンドル名を指定 if ( 'something’' === $handle ) { return str_replace( 'src', ' async src', $tag ); } return $tag; } add_filter( 'script_loader_tag', 'add_async', 10, 2 );
他のパターンで読み込む際もdeferをasyncに置き換えた読み込み方でよいです。
3,シンプル、インラインはファーストビューで使う
ファーストビューではシンプル(普通の読み込み)、インラインでの読み込みをしますが、
テンプレートに直接記述することがほとんどと思います。
wp_euqueue_scriptで読む際も特にカスタマイズする必要はありません。
プラグインを用いた読み込みに関して
なお、ここまでプラグインについて説明しませんが、
実はプラグインでも同様のことができます。
例えば、「Hummingbird (https://wordpress.org/plugins/hummingbird-performance/)」というプラグインを使えば、JavaScriptをdeferで読み込むことが可能です。
ただ、そもそもJavaScriptファイルの数がそこまでなかったり、テンプレートに簡単に記述することで設定が終わる場合も多く、
またasyncとdeferの片方しかできないプラグインも多いので、
直接記述することをオススメします。
まとめ
WordPressでもJavaScriptを用いる場合は表示速度に大きく影響します。
メンテナンスをしっかりすることで、JavaScriptを使いつつ、表示高速化も可能です。
この記事が参考になれば幸いです。
当サイトではこの他にもWebに関するお役立ち情報を多数ご紹介しています。
Web担当者の方、デジタルマーケティングに興味がある方はぜひご覧ください。
広告運用やSEO、解析・Web製作など、当社はWebに関わるベストソリューションをご提供しています。お悩み・ご相談も受け付けておりますので下記のボタンからお気軽にご連絡ください。
無料Webサイト高速化診断で課題を見える化!【毎月5社限定】
株式会社デジタルアイデンティティでは、毎月先着5社限定で無料の高速化診断を実施しています!
高速化に関するこんなお悩みはありませんか?
- 高速化でどこから手をつければいいかわからない…
- 自社で高速化をしてみたが、効果が上がらない…
- PageSpeed Insightsのスコアが良くならない…
- 高速化ができるリソースがない / 人材がいない…
Webサイト高速化は、同じ項目であってもサイトの状況によって、対応するべきポイントが変わる難易度の高い施策です。
自社での対応が可能な場合もありますが、難易度の高い施策が必要な場合もあります。
そんな時は、無料の高速化診断をお試しください!
様々なサイトの高速化を実現してきたプロが、あなたのWebサイトを分析!
高速化に必要な施策と施策毎の難易度、改善後のインパクトまで、まとめてご報告します!
- どんな施策をすれば良いか?
- どの施策から実施するか?
- どの程度、スピードを改善できそうか?
など、高速化施策の方針が明確化します!
ただし、毎月先着5社様限定となっておりますので、お早めにお申し込みください!