对于插件,一定要考虑Login No Captcha reCAPTCHA by Robert Peake.
如果你想在不引入其他插件的情况下将一些东西加入到你的主题中,那么Megan at Megabytecreated an article.
<?php
/**
* These Functions Add and Verify the Invisible Google reCAPTCHA on Login
*/
add_action(\'login_enqueue_scripts\', \'login_recaptcha_script\');
function login_recaptcha_script() {
wp_register_script(\'recaptcha_login\', \'https://www.google.com/recaptcha/api.js\');
wp_enqueue_script(\'recaptcha_login\')
}
add_action( \'login_form\', \'display_recaptcha_on_login\' );
function display_recaptcha_on_login() {
echo "<script>
function onSubmit(token) {
document.getElementById(\'loginform\').submit();
}
</script>
<button class=\'g-recaptcha\' data-sitekey=\'YOUR_PUBLIC_KEY\' data-callback=\'onSubmit\' data-size=\'invisible\' style=\'display:none;\'>Submit</button>";
}
add_filter(\'wp_authenticate_user\', \'verify_recaptcha_on_login\', 10, 2);
function verify_recaptcha_on_login($user, $password) {
if (isset($_POST[\'g-recaptcha-response\'])) {
$response = wp_remote_get( \'https://www.google.com/recaptcha/api/siteverify?secret=YOUR_SECRET_KEY&response=\' . $_POST[\'g-recaptcha-response\'] );
$response = json_decode($response[\'body\'], true);
if (true == $response[\'success\']) {
return $user;
} else {
// FIXME: This one fires if your password is incorrect... Check if password was incorrect before returning this error...
// return new WP_Error( \'Captcha Invalid\', __(\'<strong>ERROR</strong>: You are a bot\') );
}
} else {
return new WP_Error( \'Captcha Invalid\', __(\'<strong>ERROR</strong>: You are a bot. If not then enable JavaScript.\') );
}
}