プラグインなしでWordPressを高速化する方法(コードのみのガイド)

公開日 | 投稿者
読了時間6分

これを読んでいるということは、おそらく 一般的なWordPressのパフォーマンスアドバイスにうんざりしているのでしょう。WP Rocketのインストール、画像最適化プラグインの追加、アセットマネージャーの導入といったいつものルーチンは、しばしばパラドックスを引き起こします。 サイトを高速化するためにプラグインをインストールしても、そのプラグイン自体がデータベースの肥大化、バックグラウンドのcronジョブ、そして独自のCSS/JSペイロードを追加してしまうのです。

真実は、WordPressが1秒以内に読み込まれるために15個ものパフォーマンスプラグインは必要ないということです。真の速度最適化は、サーバー、データベース、コアコードという金属層(ハードウェアに近い部分)で行われます。

このガイドでは、プラグインエコシステムを完全に回避します。サーバー側の設定、 wp-config.php 調整、そして外科的な functions.php スニペットを使用してWordPressを最適化します。


1. サーバー側の基盤(PHPは不要)

WordPressのコードを一行も触る前に、サーバー環境を徹底的に最適化する必要があります。弱いサーバーはフロントエンドのキャッシュでは修正できません。

PHP 8.1以上にアップグレード

WordPressはPHPで動作します。PHP 7.4からPHP 8.1または8.2に移行することで、実行時間を20〜30%短縮し、メモリ消費量を大幅に削減できます。 アクション: cPanel、Plesk、または独自のVPSを管理している場合はCLI経由でこれを変更してください。

サーバーレベルの圧縮を有効にする(GzipよりBrotli)

Gzipは標準的ですが、 Brotli (Googleが開発)は、同じCPUコストでテキストファイル(HTML、CSS、JS)に対して約15〜20%優れた圧縮率を提供します。 アクション(Nginx): あなたの nginx.conf でBrotliが有効になっていることを確認してください:

brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/javascript application/json image/svg+xml;

FastCGIキャッシュ(Nginx)またはLiteSpeedキャッシュを実装する

PHPベースのキャッシュプラグイン(キャッシュを提供するためにWordPressの一部読み込みが必要)を使用する代わりに、Webサーバーレベルでキャッシュを行います。Nginx FastCGIキャッシュは、生成されたHTMLをRAMまたはディスクに保存し、直接提供することで、匿名訪問者に対してPHPとMySQLを完全にバイパスします。


2. 次によるハードニングと軽量化 wp-config.php

その wp-config.php ファイルはあなたのコントロールルームです。デフォルトでは、WordPressは時間の経過とともにデータベースを肥大化させる特定の動作を許可しています。

これらのスニペットを /* That's all, stop editing! Happy publishing. */ 行の直前に追加してください。

投稿リビジョンの制限

デフォルトでは、WordPressは投稿のリビジョンを無制限に保存します。50回更新された投稿は、 wp_posts データベーステーブルに50個のコピーを持つことになり、データベースクエリを劇的に遅くします。

// Keep only the last 3 revisions
define( 'WP_POST_REVISIONS', 3 );

自動保存間隔の最適化

WordPressは60秒ごとに自動保存します。複数の編集者が作業している場合、これはデータベースに大きな負荷をかけます。間隔を長くしましょう。

// Change autosave from 60 seconds to 5 minutes
define( 'AUTOSAVE_INTERVAL', 300 );

ゴミ箱をより速く空にする

削除された投稿やコメントは30日間データベースに残ります。これを減らしてデータベースをスリムに保ちましょう。

// Empty trash every 7 days
define( 'EMPTY_TRASH_DAYS', 7 );

3. 「アンチ・ブロート(肥大化防止)」 functions.php マスタースニペット

WordPressコアは、デフォルトで大量のレガシーサポートスクリプト、ディスカバリーリンク、インラインスタイルを  および 

 に注入します。

競合他社に対して最大限の情報優位性を得るために、単に「軽量化プラグインを使ってください」と言うだけではありません。WordPressの最も一般的な肥大化を外科的に取り除くための正確なコードを以下に示します。

注意:これを子テーマの functions.php またはドロップインmu-pluginに追加してください。

/**
 * The Ultimate WordPress Debloat Snippet
 */
add_action('init', function() {
    // 1. Remove RSD, XMLRPC, and WLW links
    remove_action('wp_head', 'rsd_link');
    remove_action('wp_head', 'wlwmanifest_link');
    add_filter('xmlrpc_enabled', '__return_false');

    // 2. Remove WordPress version footprint (Security & Speed)
    remove_action('wp_head', 'wp_generator');

    // 3. Remove Shortlinks and REST API links from header
    remove_action('wp_head', 'wp_shortlink_wp_head');
    remove_action('wp_head', 'rest_output_link_wp_head');

    // 4. Disable native Emojis (Saves 1 JS and 1 CSS HTTP Request)
    remove_action('wp_head', 'print_emoji_detection_script', 7);
    remove_action('wp_print_styles', 'print_emoji_styles');
    remove_action('admin_print_scripts', 'print_emoji_detection_script');
    remove_action('admin_print_styles', 'print_emoji_styles');
    remove_filter('the_content_feed', 'wp_staticize_emoji');
    remove_filter('comment_text_rss', 'wp_staticize_emoji');
    remove_filter('wp_mail', 'wp_staticize_emoji_for_email');

    // 5. Disable oEmbeds (If you don't embed external URLs automatically)
    remove_action('wp_head', 'wp_oembed_add_discovery_links');
    remove_action('wp_head', 'wp_oembed_add_host_js');
    add_action('wp_footer', function() { wp_deregister_script('wp-embed'); });
});

/**
 * 6. Remove Global Styles (WP 5.9+ Inline CSS Bloat)
 */
add_action('wp_enqueue_scripts', function() {
    wp_dequeue_style('global-styles');
    wp_dequeue_style('classic-theme-styles');
}, 100);

/**
 * 7. Remove jQuery Migrate (If using modern themes/plugins)
 */
add_action('wp_default_scripts', function($scripts) {
    if (!is_admin() && isset($scripts->registered['jquery'])) {
        $script = $scripts->registered['jquery'];
        if ($script->deps) {
            $script->deps = array_diff($script->deps, ['jquery-migrate']);
        }
    }
});

/**
 * 8. Throttle the Heartbeat API
 * Prevents high CPU usage when leaving the WP Admin open
 */
add_filter('heartbeat_settings', function($settings) {
    $settings['interval'] = 60; // Throttle to 60 seconds
    return $settings;
});

何が達成できたのでしょうか?

上記のコードを追加することで、即座に最大 5〜8個の不要なHTTPリクエスト を排除し、すべてのページ読み込みから数十行のインラインCSS/JSを削除しました。これらすべてを、プラグインを一つもインストールすることなく実現しました。


4. メディアの最適化(ハードな方法)

SmushやImagifyのようなプラグインは便利ですが、PHPサーバー上で画像処理を実行するため、CPUリソースを消費します。

手動でのWebP/AVIF変換

画像をWordPressにアップロードする前に、 Squoosh.app (Google製)や TinyPNGのような外部のロスレス圧縮ツールを通してください。さらに良いのは、アップロード前にローカルで .webp WebP .avif またはAVIF形式に変換することです。

ネイティブの遅延読み込み(Lazy Loading)を活用する

WordPress 5.5以降、ネイティブの遅延読み込みが組み込まれています。WordPressは自動的に画像に loading="lazy" を追加します。JavaScriptベースの遅延読み込みプラグインは不要です。ただし、ロゴやヒーロー画像などの「ファーストビュー」にある画像には、Largest Contentful Paint (LCP) を遅延させるため、この属性を付けないようにしてください。

ページ内の最初の画像から遅延読み込みを削除するには、以下を使用します。 functions.php:

add_filter( 'wp_get_attachment_image_attributes', function( $attr, $attachment, $size ) {
    static $is_first_image = true;
    if ( $is_first_image ) {
        $attr['loading'] = 'eager'; // Force immediate load for LCP
        $is_first_image = false;
    }
    return $attr;
}, 10, 3 );

5. phpMyAdminによるデータベースのデフラグ

最適化プラグインには通常「データベースのクリーンアップ」ボタンがありますが、これはデータベースレベルでネイティブに行うことができます。

  1. ホスティングパネルにログインし、 phpMyAdmin.
  2. を開きます。WordPressデータベースを選択します。
  3. 一番下までスクロールし、 すべてチェック.
  4. を選択します。「選択した項目」ドロップダウンで、 テーブルを最適化.

を選択します。MySQLがテーブルインデックスを再構築し、未使用の領域を回収します。これを月に一度手動で行ってください。


評決

プラグインを使わずにWordPressを最適化することは、単にプレミアムサブスクリプションの費用を節約するだけではありません。それは、 技術的負債を削減するという哲学です。インストールしないプラグインは、パッチを当てる必要のないセキュリティ脆弱性であり、クリーンアップする必要のないデータベーステーブルであり、サーバーが実行する必要のないPHPスクリプトです。

ワークロードをサーバー(PHP 8.1+、Nginx FastCGI)に移行し、 wp-config.phpにおいて規律を強制し、 functions.phpを使用してコアの肥大化を削ぎ落とします。Time to First Byte (TTFB) と Core Web Vitals にその違いが反映されるでしょう。

この記事をシェア

Ajay Malik

Ajay Malikは、8年以上の経験を持つWordPress開発者であり、エリートフリーランサーです。