08
MAY
ウェブFRIDAY 2020 / 5 / 8
Contact Form 7のReCaptchaアイコンをフォームページ以外では無効化する方法
Text by Hiroyuki Matsumoto
WordPressでフォーム作成に使用される Contact Form 7 には ReCaptcha を使ってロボット(自動実行プログラム)による迷惑送信を防ぐ機能を簡単に使用することができます。
ただこの設定を有効にするとサイト内の全ページで、右下に ReCaptchaアイコンが固定表示されるようになります。
ページのデザインにも影響するため必要に応じて消したりしますが、下記の記述を functions.php にすることで、フォームページ以外では無効化することが可能です。
remove_action( 'wp_enqueue_scripts', 'wpcf7_recaptcha_enqueue_scripts', 10, 0); add_action('wpcf7_contact_form', function(){ wpcf7_recaptcha_enqueue_scripts(); });
1行目では、単純に ReCaptcha 処理を追加する部分を無効化しており、
2行目以降では、フォームが読み込まれる際に動作するフックの ‘wpcf7_contact_form’ が呼び出されたら、ReCaptcha 処理を実行するよう再度設定処理を行わせているだけですね。
ただし若干対応が不完全な部分もあり、HTMLソースを見ると下記のように同じ変数が重複して定義されてしまいます。
<script type='text/javascript'> /* <![CDATA[ */ var wpcf7 = {"apiSettings":{"root":"https:\/\/example.com\/wp-json\/contact-form-7\/v1","namespace":"contact-form-7\/v1"}}; var wpcf7 = {"apiSettings":{"root":"https:\/\/example.com\/wp-json\/contact-form-7\/v1","namespace":"contact-form-7\/v1"}}; /* ]]> */ </script>
対応が面倒だったのと、まぁ実害があるわけじゃないし、ということで放置しています。
※該当箇所のWordPressのソースが、抽象クラスを使って書かれている部分だったので、読み解くのが面倒だったというのが本音です。
TEXT by
松本 博之(まつもとひろゆき)
1978年、鳥取県米子市生まれ。
株式会社マジックワード WEBシステムの開発・運用を担当。
WordPressの実績多数。表面的な使用方法を把握するだけでなく、WordPressのソースコードを読み解いて対応できます。
国家資格の応用情報処理技術者をなんとなくとりました。