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にするのがおすすめです。今回は、…