自分のためのメモ

reCAPTCHA v.3をプラグインなしで

KEY発行

Googleアカウントにログイン済みの状態で
http://www.google.com/recaptcha/admin
より新しくサイトを登録し、KEYシークレットKEYを発行。

サイトに実装

テーマ側に追加するコード①

//==========================================
//	recaptcha
//	================

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['recaptcha_response'])) {

    // Build POST request:
    $recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
    $recaptcha_secret = '〇〇〇〇〇〇〇〇〇〇〇〇'; // シークレットキー
    $recaptcha_response = $_POST['recaptcha_response'];

    // Make and decode POST request:
    $recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response);
    $recaptcha = json_decode($recaptcha);

    // Take action based on the score returned:
    if ($recaptcha->score >= 0.5) { // botか人かの判定は中間の0.5と本メモでは設定
        // Verified - send email
    } else {
        // Not verified - show form error
    }

}

テーマ側に追加するコード②

KEYを〇〇〇に2箇所入れる。※シークレットKEYではない。

<!-- スラッグがcontactとentryのページに設置する場合 -->
<?php if ( is_page('contact') || is_page('entry') ) : ?>
	<script src="https://www.google.com/recaptcha/api.js?render=〇〇〇〇〇〇〇〇〇〇〇〇"></script>
	<script>
		grecaptcha.ready(function () {
			grecaptcha.execute('〇〇〇〇〇〇〇〇〇〇〇〇', {action: 'homepage'}).then(function(token) {
				var recaptchaResponse = document.getElementById('recaptchaResponse');
				recaptchaResponse.value = token;
			});
		});
	</script>
<?php endif; ?>

管理画面側に追加するコード

※フォーム(プラグイン側)に追記
実際にフォームパーツを生成しているエディター内の最下部に以下をペースト

<input type="hidden" name="recaptchaResponse" id="recaptchaResponse">

で右下にかわいいのが出るようになる。完了。

補足

1000回/1秒(100万回/1ヶ月)以上のアクセスが見込まれるケースではEnterprise(有償)版を利用する