wp_register_script()
を使って、スクリプトを遅延または非同期で読み込むことで、ページの表示速度を向上させます。defer
とasync
を使い分けることで、HTMLの読み込みとスクリプト実行のタイミングを柔軟に管理します。
目次
解説
- 遅延読み込み(
defer
)は、HTMLのパースが完了した後にスクリプトを実行するため、ページの表示がブロックされません。 - 非同期読み込み(
async
)は、HTMLのパースと並行してスクリプトが実行されるため、スクリプトが重い場合にパフォーマンスを向上させます。
function register_script_with_defer($tag, $handle) {
// 特定のスクリプトに対して defer 属性を付与
if ('custom-script' === $handle) {
return str_replace(' src', ' defer="defer" src', $tag);
}
return $tag;
}
add_filter('script_loader_tag', 'register_script_with_defer', 10, 2);
function enqueue_deferred_script() {
wp_register_script('custom-script', get_template_directory_uri() . '/js/custom.js', [], '1.0.0', true);
wp_enqueue_script('custom-script');
}
add_action('wp_enqueue_scripts', 'enqueue_deferred_script');
ソースの解説
wp_register_script()
でcustom.js
を登録し、依存関係なしでフッターに読み込みます。script_loader_tag
フィルタを使用し、<script>
タグにdefer
属性を追加します。async
を使いたい場合は、defer="defer"
をasync="async"
に変更するだけです。
難易度
フィルターフックを使った処理のため、初学者には少し難しいかもしれません。
ポイント
- 遅延読み込み(defer)は、複数のスクリプトを実行順に処理したいときに便利です。
- 非同期読み込み(async)は、スクリプトの依存関係がない場合に効果的です。
Q&A
まとめ
wp_register_script()
とscript_loader_tag
フィルタを使うことで、スクリプトの読み込みを柔軟に制御できます。defer
やasync
の適切な使用は、ページの表示速度向上に大きく貢献します。
コメント