0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Contact Form 7 reCAPTCHA を特定のページでだけ読み込ませる方法

Posted at

はじめに

Contact Form 7 は、仕様上、お問い合わせページだけでなく、
サイトトップなど全ページで読み込まれます。

これは Contact Form 7 Google ReCAPTCHA V3 も同様でして、
全ページで読み込まれます。

何が問題か

スクリーンショット 2024-10-04 141558.png

お問い合わせページでない、普通のページのリクエストでもReCAPTCHAが動くため、
余計なリクエスト数がカウントされます。

これにより、普通にお問い合わせを行ってもスパム認定される場合があるほか、
ReCAPTCHAの無料枠が月1万リクエストであるため、
それを超えると正常に判定されなくなったり、課金対象になったりします。

そのため、Contact Form 7 も ReCAPTCHA も、
特定のページでだけ読み込ませるような対策が必須になります。

実装

functions.php に、以下のような記述を追加してください。

functions.php
/**
 * Contact Form 7 をお問い合わせページだけで読み込むようにする
 * これをしないと ReCAPTCHA も全ページで読み込まれてしまい
 * 余計なリクエストが発生するため
 */
function cf7_enqueue_scripts_and_styles()
{
    // CF7を読み込ませる固定ページを定義する
    $pages = ['contact','entry'];
    if (is_page($pages)){
        if ( function_exists( 'wpcf7_enqueue_scripts' ) ) {
            wpcf7_enqueue_scripts();
        }

        if ( function_exists( 'wpcf7_enqueue_styles' ) ) {
            wpcf7_enqueue_styles();
        }
    }
    else {
        wp_deregister_script('google-recaptcha');
        wp_deregister_script('wpcf7-recaptcha');
    }
}
add_filter('wpcf7_load_js', '__return_false');
add_filter('wpcf7_load_css', '__return_false');
add_action('wp_enqueue_scripts', 'cf7_enqueue_scripts_and_styles', 100, 0);

動作確認方法

  1. お問い合わせページでF12キーを押して開発者ツールを開き、要素タブを開きます
  2. Ctrl + Fキーを押して検索バーを出し、「contact-form-7」や「recaptcha」で検索します
  3. 想定通りのライブラリが読み込まれていることを確認します
  4. サイトトップなど、ライブラリを読み込みたくないページで1~2の手順を実行します
  5. ライブラリが読み込まれていないことを確認します

参考URL

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?