innocode-digital/wp-recaptcha

此包已被废弃,不再维护。作者建议使用wp-digital/wp-recaptcha包。

帮助保护网站,使用Google reCAPTCHA v3或Cloudflare Turnstile。

安装数: 11,116

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 12

分支: 0

开放问题: 0

类型:wordpress-muplugin

3.0.5 2023-08-29 12:28 UTC

README

描述

帮助保护网站,使用Google reCAPTCHA v3Cloudflare Turnstile。此插件默认提供登录和忘记密码表单的保护,但可以通过以下文档添加对任何表单的保护。

要求

  • PHP 7.4+
  • WordPress 6.2+(可以尝试使用旧版本,但未经测试)

功能

  • 默认保护登录和忘记密码表单。
  • 支持Google reCAPTCHA v3和Cloudflare Turnstile。
  • 允许IP地址绕过验证。
  • 向用户发送验证邮件。
  • 允许自定义验证邮件的主题、消息正文和链接。
  • 允许自定义验证码长度。
  • 允许为自定义表单添加保护。

屏幕截图

Google reCAPTCHA v3

Cloudflare Turnstile

Verification

Allowed IPs

安装

  • 首选方法是使用Composer

    composer require wp-digital/wp-recaptcha
    

    默认情况下,它将被安装为必须使用插件。但可以通过composer.json中的extra.installer-paths进行控制。

  • 另一种方法是将其克隆到wp-content/mu-plugins/wp-content/plugins/

    cd wp-content/plugins/
    git clone git@github.com:wp-digital/wp-recaptcha.git
    cd wp-recaptcha/
    composer install
    

如果插件作为常规插件安装,请从插件页面或WP-CLI激活Bot Protectionwp plugin activate wp-recaptcha

用法

添加所需的常量(通常到wp-config.php

define( 'WPD_RECAPTCHA_KEY', '' );
define( 'WPD_RECAPTCHA_SECRET', '' );

或只需

define( 'RECAPTCHA_KEY', '' );
define( 'RECAPTCHA_SECRET', '' );

根据常量,插件将使用Google reCAPTCHA v3或Cloudflare Turnstile。如果两个常量都为空,则插件将被禁用。

Cloudflare Turnstile基于WPD_RECAPTCHA_KEYRECAPTCHA_KEY常量检测,使用正则表达式: ^\dx

允许IP地址绕过验证

有两种方法可以允许IP地址绕过验证

  1. 将IP地址添加到WPD_RECAPTCHA_ALLOWED_IPS常量

    define( 'WPD_RECAPTCHA_ALLOWED_IPS', '' ); // comma separated list of IP addresses
    
  2. 在管理员区域添加IP: 设置 -> Bot Protection -> 允许的IP,每行一个IP(见屏幕截图)。

自定义

验证

修改验证邮件主题

/**
 * @param string  $subject
 * @param string  $code
 * @param WP_User $user
 *
 * @return string
 */
add_filter( 'wpd_recaptcha_verification_email_subject', function ( string $subject, string $code, WP_User $user ): string {
	return 'New subject';
}, 10, 3 );

修改验证邮件正文

/**
 * @param string  $message
 * @param string  $code
 * @param WP_User $user
 *
 * @return string
 */
add_filter( 'wpd_recaptcha_verification_email_message', function ( string $message, string $code, WP_User $user ): string {
	return 'New message';
}, 10, 3 );

修改验证链接

/**
 * @param string  $link
 * @param string  $code
 * @param WP_User $user
 *
 * @return string
 */
add_filter( 'wpd_recaptcha_verification_link', function ( string $link, string $code, WP_User $user ): string {
	return 'https://example.com/verify/' . $code;
}, 10, 3 );

修改验证码长度

/**
 * @param int $length
 *
 * @return int
 */
add_filter( 'wpd_recaptcha_verification_code_length', function ( int $length ): int {
	return 10;
} );

钩子

动作

  • wpd_recaptcha_loaded - 在插件加载时触发。接受一个参数:WPD\Recaptcha\Plugin实例。
  • wpd_recaptcha_verify - 在需要验证时触发。接受一个参数:WP_User实例。
  • wpd_recaptcha_form_success - 当reCAPTCHA或Turnstile验证成功时触发。接受两个参数:WPD\Forms\FormInterface实例和WPD\Recaptcha\Response实例。

文档

为自定义表单添加保护

  • 创建实现表单接口WPD\Forms\FormInterface的类

     <?php
    
     use WPD\Forms\FormInterface;
    
     class CustomForm implements FormInterface {
     	// @TODO: implement methods
     }
    
  • 将表单添加到wpd_recaptcha_forms过滤器

     /**
      * @param array $forms
      *
      * @return array
      */
     add_filter( 'wpd_recaptcha_forms', function ( array $forms ): array {
     	$forms[] = new CustomForm();
    
     	return $forms;
     } );