WordPressプラグインのContact Form 7でスパム送信を防ぐために、GoogleのreCAPTCHAはよく使われます。
しかし、reCAPTCHAを使用するとJavaScriptが読み込まれるため、サイトの表示速度が低下してしまいます。
ということで今回は、問い合わせページ以外ではreCAPTCHAを読み込ませない方法を紹介します。
問い合わせページ以外でreCAPTCHAのコードを読み込ませない方法
以下のPHPコードを、functions.phpにコピペしてください。
/**
 * コンタクトページ以外でreCAPTCHAを無効化
 */
if (!function_exists('dequeue_recaptcha_scripts')) {
    function dequeue_recaptcha_scripts()
    {
        // Contact Form 7を使用しているページのスラッグ
        $contact_slugs = array(
            'contact' // 問い合わせページのスラッグ
        );
        if (is_page() || is_single()) {
            global $post;
            $slug = $post->post_name;
            $is_contact_page = in_array($slug, $contact_slugs);
            
            if(!$is_contact_page) {
                // 問い合わせページ以外で無効化
                wp_dequeue_script('google-recaptcha');
                wp_dequeue_script('wpcf7-recaptcha');
            }
        } else {
            // 固定ページ・投稿ページ以外では無効化
            wp_dequeue_script('google-recaptcha');
            wp_dequeue_script('wpcf7-recaptcha');
        }
    }
    add_action('wp_enqueue_scripts', 'dequeue_recaptcha_scripts', 100, 1);
}
これで問い合わせページ以外ではreCAPTCHAのJavaScriptが読み込まれなくなります。
コードの解説
コード自体はそこまで難しくありません。
global $post;
$slug = $post->post_name;
現在の投稿のスラッグを取得します。
$contact_slugs = array(
    'contact' // 問い合わせページのスラッグ
);
Contact Form 7を使っているページのスラッグを配列で記述します。
複数ページでContact Form 7を使っている場合は、
$contact_slugs = array(
    'contact',
    'recruit'
);
このように記述します。
wp_dequeue_script('google-recaptcha');
wp_dequeue_script('wpcf7-recaptcha');
Contact Form 7のソースコードを見たところ、reCAPTCHAに関するJavaScriptが2つ読み込まれていたので、両方とも読み込まないようにします。
 add_action('wp_enqueue_scripts', 'dequeue_recaptcha_scripts', 100, 1);
Contact Form 7でreCAPTCHAに関するJavaScriptを読み込むadd_action('wp_enqueue_scripts')は優先度(第3引数)が20になっていたので、ここではそれよりも大きい100にしています。
後から上記を読み込ませるためです。
Page Speed Insightsの点数
Page Speed Insightsの点数は以下のように変化しました。


かなり点数が上がりました。効果抜群ですね。
その他の記事
        【画像軽量化】WordPressで画像を軽くする方法やプラグインの…
サイトの表示速度が遅くなる原因のほとんどが画像です。画像を最適化することは、サイトの表示速度を速くす…
        WordPressでTwitterとInstagramの埋め込みを遅延読み込みさせ…
TwitterとInstagramの読み込みは、サイト表示速度を低下させます。これらの埋め込みがある…
        画像をWebPにするWordPressプラグイン【EWWW Image Optimizer】
サイト内の画像読み込みを速くするために、画像のフォーマットをWebPにするのがおすすめです。今回は、…
				
		
