WordPressサイトの表示速度は、SEOやユーザー体験に直結します。速度改善というと、すぐに高速化プラグインを導入しがちですが、プラグインを増やすほど、それ自体が負荷や不具合の原因になることもあります。
実は、WordPressが標準で出力している「不要なもの」を止める、画像を適切に扱う、キャッシュを正しく設定する、といった基本の対策だけで、体感速度は大きく変わります。この記事では、プラグインを増やさずにできる高速化を、チェックリスト形式でまとめます。
高速化に取りかかる前に:現状を計測する
対策の効果を確かめるには、最初に現状の数値を記録しておく必要があります。次のツールを使うと、ボトルネックが分かります。
- PageSpeed Insights:Googleが提供する計測ツール。モバイルとPCの両方でスコアと改善案を確認できる。
- Chromeのデベロッパーツール(Networkタブ):読み込まれるファイルの種類・サイズ・順序を確認できる。
- Lighthouse:Chromeに内蔵された診断機能。
特に、表示速度の指標であるLCP(最大コンテンツの表示時間)、CLS(レイアウトのずれ)、INP(操作への反応)を意識して見てください。「何が重いか」が分かってから対策すれば、効率よく改善できます。
対策1:不要な標準出力を止める
WordPressは、使っていなくても、多くのスクリプトやタグをページに出力します。これらを無効にすると、読み込むファイルが減ります。mu-pluginまたはfunctions.phpに、次のように記述します。
絵文字スクリプトを停止する
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'wp_enqueue_scripts', 'wp_enqueue_emoji_styles' ); // WordPress 6.4以降
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
絵文字を変換するJavaScriptとCSSが不要になります。最近のブラウザは、絵文字を標準で表示できるため、停止しても問題ありません。なお、WordPress 6.4以降は、絵文字CSSの出力が wp_enqueue_emoji_styles に移り、print_emoji_styles は非推奨になっています。そのため、上のコードは両方を記述しています。
embed(埋め込み)機能を停止する
add_action( 'wp_footer', function () {
wp_dequeue_script( 'wp-embed' );
} );
他のWordPressサイトの記事URLを貼って、カード形式で埋め込み表示する機能を使わない場合は、不要です。
head内の不要なリンクを削除する
remove_action( 'wp_head', 'wp_generator' ); // WordPressのバージョン情報
remove_action( 'wp_head', 'wlwmanifest_link' ); // Windows Live Writer
remove_action( 'wp_head', 'rsd_link' ); // 外部ツール用
remove_action( 'wp_head', 'wp_shortlink_wp_head' ); // 短縮URL
速度への影響は小さく、バージョン情報を隠す効果も限定的ですが、HTMLの出力が整理されます。
ブロックエディターのCSSを外す
クラシックエディターや、独自のレイアウトで運用しているサイトでは、ブロック用のCSSが不要な場合があります。
add_action( 'wp_enqueue_scripts', function () {
wp_dequeue_style( 'wp-block-library' );
wp_dequeue_style( 'wp-block-library-theme' );
wp_dequeue_style( 'global-styles' );
}, 100 );
ただし、ブロックエディターで記事を作成しているサイトでは、レイアウトが崩れる原因になります。外す前に、全種類のページを確認してください。
対策2:画像を最適化する
ページの重さの大半は画像です。画像の対策は、効果が最も大きい項目といえます。
適切なサイズで読み込む
表示サイズが幅600pxなのに、4000pxの画像を読み込んでいるサイトは多くあります。アップロード前にリサイズするか、WordPressが生成する中サイズ・大サイズを使い分けましょう。WordPressは、srcset 属性を自動で出力するため、wp_get_attachment_image() など標準関数で画像を出力すれば、端末に合ったサイズが選ばれます。
WebP形式を使う
WebPは、JPEGやPNGより軽量な画像形式です。WordPress 5.8以降は、WebPのアップロードに標準で対応しています。サーバーが対応していれば、アップロード時にWebPへ変換することもできます。
遅延読み込み(lazy load)を使う
WordPressは、画像に loading="lazy" を自動で付与します。画面に入るまで画像を読み込まない仕組みです。ただし、ファーストビューの画像(メインビジュアルなど)には付けないようにしてください。WordPress 6.3以降は、最初の画像を自動で判定して調整する仕組みも入っていますが、テーマによっては効かないことがあるため、メインビジュアルの出力は自分で確認しましょう。最初に見える画像まで遅延させると、LCPが悪化します。
// ファーストビューの画像は遅延させない
echo wp_get_attachment_image( $id, 'large', false, array(
'loading' => 'eager',
'fetchpriority' => 'high',
) );
幅と高さを指定する
width と height 属性を指定していないと、画像の読み込み後にレイアウトがずれて、CLSが悪化します。標準関数で出力すれば自動で付与されるため、手書きのimgタグを使う場合は注意してください。
対策3:CSS・JavaScriptの読み込みを見直す
不要なプラグインのスクリプトを、必要なページだけにする
お問い合わせフォームのプラグインなどは、サイト全体でCSSとJavaScriptを読み込むことがあります。フォームのあるページ以外では読み込まないようにすると、無駄が減ります。
add_action( 'wp_enqueue_scripts', function () {
if ( ! is_page( 'contact' ) ) {
wp_dequeue_style( 'contact-form-7' );
wp_dequeue_script( 'contact-form-7' );
}
}, 100 );
ハンドル名はプラグインによって異なります。ページのソースや、デベロッパーツールで読み込まれているファイル名から、確認してください。
JavaScriptをdeferで読み込む
JavaScriptがページの描画をブロックするのを避けるため、defer 属性を付けて読み込みます。WordPress 6.3以降は、wp_enqueue_script() の引数で、読み込み方法を指定できます。
wp_enqueue_script( 'my-script', get_theme_file_uri( '/js/main.js' ), array(), '1.0', array(
'strategy' => 'defer',
'in_footer' => true,
) );
jQuery Migrateを外す
古いjQueryのコードとの互換性のためのファイルですが、最近のテーマでは不要なことが多いです。
add_action( 'wp_default_scripts', function ( $scripts ) {
if ( ! is_admin() && isset( $scripts->registered['jquery'] ) ) {
$scripts->registered['jquery']->deps = array_diff(
$scripts->registered['jquery']->deps,
array( 'jquery-migrate' )
);
}
} );
外したあとに、スライダーなどのjQuery依存の機能が動くか確認してください。
対策4:キャッシュを正しく設定する
ブラウザキャッシュ
画像・CSS・JavaScriptなどの静的ファイルに有効期限を設定すると、2回目以降の訪問で再ダウンロードが不要になります。Apacheなら、.htaccess に次のように記述します。
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
</IfModule>
レンタルサーバーによっては、管理画面にキャッシュや高速化の設定があります。サーバー側の機能のほうが効率的な場合が多いため、まず確認してみましょう。
圧縮(gzip・Brotli)
テキスト系ファイルを圧縮して転送すると、転送量が大きく減ります。多くのサーバーでは標準で有効ですが、PageSpeed Insightsで「テキスト圧縮の有効化」と指摘されたら、設定を確認してください。
ページキャッシュ
ページキャッシュは、生成済みのHTMLを保存して配信する仕組みです。サーバーが備えるキャッシュ機能(LiteSpeedの機能など)を使えば、プラグインを追加せずに利用できます。会員サイトなど、ログインユーザーごとに内容が変わるページは、キャッシュの対象から外す設定を忘れないようにしましょう。
対策5:データベースとサーバー環境
- リビジョンの数を制限する:wp-config.phpに
define( 'WP_POST_REVISIONS', 5 );と記述すると、保存する履歴の数を抑えられる。 - 不要なデータを削除する:スパムコメント、ゴミ箱の記事、期限切れのトランジェントを定期的に整理する。
- PHPのバージョンを上げる:PHP 8系は、PHP 7系より処理が速い。互換性を確認したうえで更新する。
- 使っていないプラグインを削除する:停止中のプラグインも含め、不要なものは削除する。
- Webフォントを減らす:読み込むフォントの種類や太さを絞り、
font-display: swapを指定する。
効果が大きい順の優先度
すべてを一度に行う必要はありません。次の順で取り組むと、効率よく成果が出ます。
- 画像のサイズ・形式の最適化(効果が最も大きい)
- ファーストビュー以外の画像の遅延読み込み
- キャッシュと圧縮の設定
- 不要なスクリプト・CSSの停止
- PHPバージョンの更新
- データベースの整理
まとめ
WordPressの高速化は、プラグインを足さなくても、多くの改善ができます。
- まず計測して、ボトルネックを把握する
- 絵文字・embedなど、使っていない標準出力を止める
- 画像のサイズ・WebP・遅延読み込みを見直す(ファーストビューは遅延させない)
- スクリプトは、必要なページだけで、deferで読み込む
- キャッシュと圧縮は、サーバー機能を優先して設定する
各対策の前後で、必ず表示確認と再計測を行ってください。見た目やフォームの動作が壊れていないことを確認しながら、少しずつ進めるのが、安全に高速化するコツです。

コメント