概要説明
初級編ではプラグインを使用した高速化がメインの内容でしたがここからはfunctions.phpにカスタマイズを加えて高速化を行います。functions.phpでのカスタマイズが不安という方はCode Snippetsプラグインを使用したカスタマイズの反映方法をご紹介いたしますのでプラグイン(管理画面)からカスタマイズを行うことができます。
functions.phpを使った高速化カスタマイズ対応
WordPressの機能を細かく調整するためのファイルになります。ただしプログラムのスキルが必要である点、設定を誤るとサイトが見えない状態になったりとリスクを伴う作業になります。
FTPを使ったファイルアップロードや、プログラムは全くわからないといった方のために今回は管理画面上からカスタマイズを反映できるプラグインを使います。
上記のようにカスタマイズ用のソースをコピーして管理画面から貼り付けて有効化すればカスタマイズ内容が有効になるというプラグインです。構文エラーがあった場合はエラーの表示と、自動的に処理を無効化してくれたりするサポート機能もついているためfunctions.phpを直接触るよりは安全です。
永続オブジェクトキャッシュ対応 ( エックスサーバー )
エックスサーバーでは「APCu」が標準で利用できるため永続オブジェクトキャッシュの対応も行うことができます
データベースを使用してコンテンツを表示させる際の効率を上げます。毎回DBに接続してSQLを実行するのではなく、サーバー側でキャッシュを行ってくれるのでWordPress がサイトのコンテンツや設定を迅速に取得できるようになり、読み込み時間を短縮できます。
・Memcached Object Cache
・Redis Object Cache
修正ファイルや確認手順は下記リンクの別ページにまとめていますのでエックスサーバーをご利用の方はオススメ致します
効果だけこちらで紹介
一番左の数字がページ表示時間 一番右のQの数字はSQL実行回数
オブジェクトキャッシュ無効
オブジェクトキャッシュ有効
初回アクセス時はキャッシュが無いため高速化はされませんが2回目にアクセスがあった場合にはかなり効果のある対応であるということがわかります。
Contact Form 7+reCAPTCHAを使っている場合 ( 難易度:難しい )
Contact Form 7とreCAPTCHAを有効にしているサイトの場合、全ページでContact Form 7とreCAPTCHAの処理が実行されています。
お問い合わせページ以外では必要はないのでお問い合わせページでのみ有効になるようにカスタマイズします。
/*---------------------------------------------------- お問い合わせページだけcontact-form-7&recaptchaを有効にする ----------------------------------------------------*/ function disable_contact_form_7() { // ↓この処理がお問い合わせページ(slugがcontact)以外という判定 if(!is_page('contact')) { wp_dequeue_style( 'contact-form-7' ); // css wp_deregister_script( 'contact-form-7' ); // script wp_deregister_script( 'google-recaptcha' ); // script } } add_action( 'wp_enqueue_scripts', 'disable_contact_form_7', 100 );
お問い合わせページが/contact の場合はslugもcontactになっているはずなので上記のスクリプトそのままで使用できます。お問い合わせページが form や recruit など違う場合はスクリプトのcontactの部分を変更してご利用ください
調整後は必ずメールが送信できるかを確認しておきましょう。
デバックモードの無効化 ( 難易度:簡単 )
サイト制作時にデバックモードを使用しており、公開時にオフにせずにそのまま運用を行っているというケースもあります。
この状態でサイトを閲覧するとエラーや警告などがあった場合にデバッグログを出力をしてしまっているのでこちらを確認します。
define('WP_DEBUG', true); // デバッグ機能 有効
wp-config.phpファイルを確認し上記の記述が確認できたらデバッグモードで稼働しています。
define('WP_DEBUG', false); // デバッグ機能 無効
functions.phpやwp-config.phpといったファイルを修正する場合は必ずFTPクライアントを使ってアップロードするようにしましょう。修正前のファイルをバックアップしておくことも重要です。
埋め込み ( Embed機能 ) を無効化 ( 難易度:簡単 )
本文内に自動埋め込み機能を使っていない場合のみ対応可能な高速化カスタマイズ。
/*---------------------------------------------------- WordPressでURLの埋め込み ( Embed機能 ) を無効化 ----------------------------------------------------*/ add_filter('embed_oembed_discover', '__return_false'); remove_action('wp_head','rest_output_link_wp_head'); remove_action('wp_head','wp_oembed_add_discovery_links'); remove_action('wp_head','wp_oembed_add_host_js');
<link rel="alternate" type="application/json+oembed" href="https://xxx/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fxxx%2F" /> <link rel="alternate" type="text/xml+oembed" href="https://xxx/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fxxx%2F&format=xml" />
上記のようなタグがソース上から消えていれば正常に無効化できています。
リビジョンの最大保存数を変更 ( 難易度:難しい )
自動的に何件でもリビジョン保存ができる状態にしているとDBが肥大化してしまい表示速度に影響が出てくることがあるので最低限の保存数に変更します。
// リビジョン数を2件に変更 define( 'WP_POST_REVISIONS', 2 );
設定変更後に記事を編集することでリビジョンの最大保存数分だけのリビジョンに更新されます。ただ1件ずつ更新していくのは少し大変なのでプラグインにて一括リビジョンデータの削除をご紹介。
WP-Sweep – プラグイン を使ってリビジョンを一括削除
WP-Sweepはリビジョンデータの削除だけでなく下記の不要データも一括削除を行いデータベースのテーブルの最適化が可能です。
リビジョン | 自動保存下書き | 削除済みコメント |
未承認コメント | スパムコメント | 削除済みコメント |
孤立投稿メタ | 孤立コメントメタ | 孤立ユーザーメタ |
孤立タームメタ | 孤立ターム関係 | 未使用のターム |
重複投稿メタ | 重複コメントメタ | 重複ユーザーメタ |
重複タームメタ | Transient オプション | 投稿メタ内の oEmbed キャッシュ |
WP-Sweepで不要データを全て削除する場合はバックアップを事前に取っておきましょう。バックアップが難しい人はリビジョンの一括削除だけで使用がオススメです。使用後はこちらのプラグインは不要なので削除しておきましょう。
サムネイルサイズを変更後にサイト側から読み込みを行っている画像を確認してみます。リサイズした画像がサムネイルで使用されていれば問題有りませんがサムネイルサイズ以外の画像を指定して一覧で表示させている場合は、プログラム内の画像のサイズ指定を調整する必要があります。