WordPress WPCodeでPHPコードを入れる、速度に与える影響はどのくらいだろうか?

WordPressWPCodeプラグインを使用すると、テーマファイルを直接変更することなく、ヘッダーやフッターにスクリプトを簡単に追加できます。 HTMLやJavaScriptだけでなくPHPコードまで管理画面から直接挿入でき、FTPやファイルエディタにアクセスしにくい環境では特に便利です。ただし、このように便利にコードを管理できるだけに、サイトの速度とサーバーの負荷、そしてセキュリティなどの面でどのような影響を与えることができるかを一緒に考慮する必要があります。

WordPress WPCodeでPHPコードを入れる、速度に与える影響はどのくらいだろうか?

WPCodeプラグイン

WPCodeプラグインは WordPress ヘッダーとフッターにスクリプトを追加するときに欠かせないツールです。 FTP接続なしでHTML、JavaScriptだけでなくPHPコードまで直接挿入することができ、実務で非常に便利に使用されます。

このプラグインは現在200万を超える WordPress サイトにインストールされて使用されています。

WordPress WPCodeプラグイン

このプラグインが多く使われる理由の一つは、ヘッダやフッタに追加するコードをFTPに接続して入れるのを案内するのが面倒なので、単にWPCodeのようなプラグインを使って挿入するように案内する場合が多いのも一役買わないかと思われます。

このプラグインを使用して、次のコードを簡単にヘッダーまたはフッターセクションに追加したり、カスタムコードスニペットとして追加したりできます。

  • Google 検索コンソール サイト所有確認コード
  • Naver サーチアドバイザー(Naver ウェブマスターツール)サイト所有権確認コード
  • Google Analyticsコード
  • 구글 AdSense 広告スクリプト
  • Google タグマネージャ関連コード
  • JavaScriptコード
  • HTMLコード
  • PHPコード

CSSコードを簡単に WordPress 追加できますが、WPCodeプラグインを介して追加することも可能です。

このように、ほぼすべての種類のカスタムコードをFTP / SFTPに接続せずに WordPress ダッシュボード内で追加できるため、このプラグインは大きな人気を集めています。

WPCodeにカスタムコードを追加する

WPCodeでPHPコードを入れる、速度に与える影響

PHPコードのような場合、通常はチャイルドテーマの関数ファイルに追加することが望ましいです。しかし、FTPにアクセスできない、またはさまざまな理由で WordPress 通知パネルから追加する必要がある場合は、WPCodeを利用できます。

アイテムWPCode(コードスニペット)テーマfunctions.php
追加方法1. WPCode » Add Snippet
2. PHP Snippetの選択、コード入力
3. Location/Hook 設定
4. Active ON
1.チャイルドテーマフォルダ/functions.phpの編集
2. add_action() などでコードをラップする
3. アップロード/保存
実行位置制御Hook、Location、Conditionで細かい(フロント/管理者/特定ページ)add_action()/add_filter() フック指定(柔軟ですが手動設定が必要)
アクティブ/非アクティブUIでトグルクリックに即座に切り替えるコードコメント処理or削除(ファイル再アップロードが必要)
パフォーマンスへの影響DBルックアップ+ランタイム実行(autoloadオプションを増加可能、高トラフィック時のオーバーヘッド)ファイルinclude + OPcache最適化(リクエストごとのDBクエリなし、より効率的)
管理の利便性初心者にやさしい、バックアップ/インポート/ライブラリのサポート開発者にやさしい、Gitなどのバージョン管理が簡単
PHPサポート直接eval-like実行可能ネイティブPHPの実行
テーマの更新テーマ変更無関係(独立)チャイルドテーマ使用時の安全

PHP スニペットが数少なく、訪問者数も多くないと WPCode のために体感するほどの速度低下はほとんどないかもしれませんが、追加されるコードが多かったり訪問者数が多い場合にはサイト速度に影響を及ぼす可能性があります。

訪問者・スニペット数が少ないとき

  • WPCodeは「DBでスニペットを読み込んで実行する」構造なので、リクエストごとに若干のオーバーヘッドがありますが、コードスニペットの数が少なく、トラフィックが少ない環境では速度に与える影響が制限されます。
  • 自動ロードオプションのサイズやDBクエリの数が少ない場合、autoloaded optionsがパフォーマンスに与える影響も少なく、実際には他のボトルネックの原因(テーマ、イメージ、外部スクリプト)がはるかに大きい変数になります。

訪問者・スニペット数が多い場合

  • トラフィックが多く、アクティブなスニペットが多いほど、「スニペットのロード+条件チェック+実行」コストがすべての要求に蓄積され、CPU・メモリ使用量とTTFBに影響を与える可能性があります。
  • 特に、スニペットデータをautoloadオプションとして大幅に保存するパターンは、高トラフィックであるほど問題を引き起こし、関連する警告 WordPress サイトの健康とコミュニティで繰り返し言及されています。
  • このため、WPCodeも最近、Proバージョンに「スニペットをファイルにロードしてDBクエリを減らし、最大約17%までのロード速度が改善された」という機能を別に出した。

まとめると、スニペット数が少なく低トラフィック環境であれば影響ほとんどないが、高トラフィック・スニペット多数環境ではファイルベース(MU-plugin など)に移動すると、パフォーマンス上より安全になる可能性があります。

実際に管理に参加したサイトの1つにWPCodeプラグインとして30以上のPHPコードスニペットが追加され、訪問者が増加すると過度のトラフィックと速度低下現象が発生する問題のため、コードを分離してプラグインにして追加したことがあります。

WPCodeコードスニペットによる速度低下

GeneratePress テーマのElements vs.テーマ関数ファイル

GeneratePress テーマの有料版であるGP Premiumを使用すると、 WordPress 通知パネル内で、PHPコードを含むHTML / JSコードなど、さまざまなコードを簡単に追加できます。この過程で、要求時にDBからElementデータを照会するクエリが追加されます(例:postmetaクエリ)、Elementsの数が増えると、DOMサイズの増加やわずかなTTFB遅延が発生する可能性があります。

GeneratePress 公式フォーラムでは、Elementsとfunctions.phpを比較テストした結果、「有意な違いはない」と明らかにしていますが、Elementsは1回の追加DBクエリが発生する可能性があり、高トラフィック環境で微妙に不利になる可能性があります。

GPプレミアムを使用してElementでHTML / JS / PHPコードを追加する場合は、数が少ないとサイトの速度に与える影響は少なくなりますが、あまりにも多くの場合はチャイルドテーマに移動するか、別のプラグインに分割することも考慮できます。

アイテムGeneratePress 要素テーマfunctions.php
追加方法1. GP Premium » Elements » Add Element
2. Hook/Blockなどタイプ選択
3. HTML/JS 入力
4. Hookの位置/条件の設定
1. チャイルドテーマ /functions.php 編集
2. add_action() でコードを追加する
3. 저장
実行位置制御Hookの位置、Display Rulesでページ/デバイス別の条件付き表示add_action() フックで指定 (より柔軟な PHP ロジック可能)
アクティブ/非アクティブUIトグルまたはDisplay Rulesによる即時制御コードコメント or 削除
パフォーマンスへの影響DB postmetaルックアップ(リクエストごとに追加クエリ、Elementsが多い場合はDOMを増やす) ファイルベース+ OPcache(最小オーバーヘッド)
管理の利便性ビジュアルエディタ、ドラッグアンドドロップ(非開発者に最適)コード編集が必要(開発者に最適)
テーマの更新GP Premium機能(テーマ内蔵、アップデート時維持)チャイルドテーマを使用する場合の安全

このブログでは、Elementsを介して最小限のコードのみを追加し、長さの長いコードは独立したプラグインにして追加する方法に置き換えました。😄

WPCodeプラグインのセキュリティ問題

WPCodeやGP PremiumのElement、Ad Inserterなどを介してPHPコードやJSコードを追加するときは、セキュリティ上の問題にも気をつけることをお勧めします。

まれですが、WPCodeにマルウェアがコードスニペットでケースに数回触れたことがあります。

ちなみに、wp-config.phpファイルに次のコードを追加すると、 WordPress 通知パネルからPHPコードを追加することはできません。

define( 'DISALLOW_FILE_MODS', true );

上記のコードがwp-config.phpファイルに追加されると、GP PremiumはPHPコードを挿入して実行できなくなります。しかし、WPCodeでテストしてみると、WPCodeでは上記のコードが適用されていても管理者ページ内からコードスニペットでPHPコードを挿入して実行できますね。 WPCodeプラグイン文書を検索しているので、次のコードを追加してサイトレベルでPHPを無効にできるとします(アクセス制御 を参照)。

define( 'WPCODE_DISABLE_PHP', true );

しかし、私は上記のコードを入れてテストしてみると、期待どおりに動作しないようです。上記のコードを追加しても、WPCodeでPHPコードをコードスニペットとして追加すると実行されます。

最後に、

WordPressでWPCode、Insert Headers And Footersなどのプラグインを使用すると、FTPに接続する必要なく WordPress 通知パネル内ですぐにHTML/JavaScript/PHPコードを簡単に追加でき、多くの人気を得ています。

ただし、WPCodeプラグインを使用して訪問者の数が多いか、あまりにも多くのコードスニペットを追加すると、サイトの速度に悪影響を及ぼす可能性があるため、注意が必要です。

参考までに WordPressドットコムに加入して利用する加入型 WordPressのプライベートプランとプレミアムプランの場合、SFTP接続は許可されていないため、HTML / JS / PHPコードを追加するにはWPCodeプラグインを使用するしかありません。そのような場合はやむを得ず使用する必要がありますが、FTPに接続できる場合は、なるべくチャイルドテーマの関数ファイルにコードを追加する方が望ましいかもしれません。

参照

2のコメント

コメントを残す

  1. テーマfunctions.phpに追加するのとは別のプラグインで作成して追加する方法は、パフォーマンスの影響に違いはありませんか?

    返信
    • 実質的な性能差はないようです。

      性能(速度)の面では実質的な違いはほとんどありません。 WordPress エンジンの立場では、コードがテーマのfunctions.phpファイルにあるのか別のカスタムプラグインファイルにあるのか、最終的には同じPHPコードとして認識して順次実行するからです。

      サイトを遅くする主な原因は、「コードがどこにあるのか」ではなく、「そのコードがどれほど重くて非効率的に書かれているか(コードの品質)」にかかっています。しばしば「プラグインが多くなるとサイトが遅くなる」と思うが、これは重い機能や最適化されていない外部プラグインを無分別にインストールした時の話であり、直接作成した軽いコードをプラグインの形に分離することは性能低下を引き起こさない。

      パフォーマンスに違いがない場合は、なぜこれら2つの方法を区別して使用するのですか?その理由は、メンテナンス、テーマの依存関係、およびコード管理の利便性にあります。

      返信