表示速度改善を行なおうと思いFirebugのYslowやGoogleのPageSpeedなどのツールを使うと、
項目としてJavaScriptがソース上部に来ていると「よくないよ」と言われてしまいます。
これをなんとか解消したいと色々やってみたのですが、
プラグインが自動的に独自のJSなどを吐き出している場合が多くあまりうまくいきませんでした。
そこでテンプレートにあるfunctions.phpを使って、
プラグインのJSの場所を強引に変えることにしました。
基本方針編でも書きましたが、なぜならプラグイン自体をハックしてそれを実施したとしても
プラグインがアップデートされればせっかくハックしたソースも無くなりそうだったからです。
functions.phpならばテンプレートに紐づいているものですし、
プラグインをアップデートしても関係ないだろうということです。
JavaScriptの出力箇所をフッターに移動
実際のソースはこのような形です。
remove_action('wp_head', 'wp_print_scripts');
add_action('wp_footer', 'wp_print_scripts');
wp_headでJavaScriptを吐き出すwp_print_scriptsの処理を一回消して、
wp_footerに付け加えるようにします。
WordPressが持っているJavaScriptをGoogle Libraries APIに変更
さらに表示速度改善として、WordPressにバンドルされているJavaScriptではなく、
Google Libraries APIのJavaScriptを呼びこむようにします。
add_action('template_redirect', 'wp_js_delete');
add_action('wp_footer', 'google_js_footer_load', 1);
wp_js_deleteでWordPressが吐き出しているJavaScriptをまず削除してしまいます。
そのあとで必要なJavaScriptだけ、
Googleが提供しているGoogle Libraries APIをフッターで呼びこむようにgoogle_js_footer_loadで指定します。
作ったfunctionは以下の通りです。
function wp_js_delete(){
//wp用のJSを利用しない
wp_deregister_script('jquery');
wp_deregister_script('jquery-form');
wp_deregister_script('prototype');
wp_deregister_script('scriptaculous-effects');
wp_deregister_script('scriptaculous-builder');
wp_deregister_script('scriptaculous');
wp_deregister_script('swfobject');
}
function google_js_footer_load(){
wp_enqueue_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js');
}
プラグイン用のJavaScript個別対応
プラグインのJavaScriptは必要なページは少ないのにもかかわらず、
全ページで呼びこんでしまうものもあります。
それらは個別に以下のように対応しました。
- 全ページでは必要ないプラグインを洗い出す。
- そのプラグインの中で、JSを呼び出しているWordPressのタグを見つける
- functions.phpで必要なページだけ吐き出すように指定する
add_action('template_redirect', 'plugin_js_delete');
function plugin_js_delete(){
//プラグインのJSを利用しない
if(!is_page('contact')){
wp_deregister_script('si_contact_form');
}
}
Fast Secure Contact Formプラグインをお問い合わせ用に使っているのですが、
contactページ以外は呼びこむ必要がないため、plugin_js_deleteでそれ以外は読み込まないようにしました。
もっとスマートなやり方があるとは思うのですが、
とりあえず現状はこの方法をとっています。




コメント
[…] This post was mentioned on Twitter by Tatsuya Arai, gadget. gadget said: さくらレンタルサーバー(共用)でのWordPress表示速度改善方法(JavaScript編): 表示速度改善を行なおうと思いFirebugのYslowやGoogleのPageSpeed […]