【WordPress】特定のページのみに「reCAPTCHA」の保護マークを表示させる方法

先日、WordPressのContact Form 7にGoogleが提供しているセキュリティツール「reCAPTCHA」を実装しましたが、全ページの右下に保護マークが表示するようになっていました。

結果的に「トップへ戻る」ボタンと重なってしまいユーザビリティ的に微妙になってしまいました。また、Google reCAPTCHAを読み込むとGoogleのPageSpeed Insights上のパフォーマンススコアが下がるらしいです。

その対策として、今回はお問い合わせページのみでreCAPTCHAを実行させる方法を解説していきます。

functions.phpの編集

ご自身のWordPressフォルダから「wp-content」>「theme」>「テーマのフォルダ」>「functions.php」を開き以下のソースコードを追記してください。

注意
functions.phpを編集する前に必ずバックアップを取るようにしておきましょう。

PHP

add_action('wp_enqueue_scripts', function () {
  global $post;
  $valid_recaptcha = false;
  $content = get_post()->post_content;

  if($content != null){
    //Contact Form7のショートコードが存在する場合
    if(has_shortcode($content, 'contact-form-7')) {
      $valid_recaptcha = true;	 
    }		
  }
  //ショートコードが存在しないならキャンセル
  if($valid_recaptcha == false){
    wp_deregister_script( 'google-recaptcha' );
  }
}, 100);

これで、お問い合わせページのみreCAPTCHAが読み込まれるようになります。