专注 WordPress 高端企业主题的的设计与开发!

WooCommerce 注册表单添加本站名称为字段的验证方式

2019 年 1 月 25 日 398次

萨龙网络使用的 Youji 原创企业主题注册登录都是使用 WooCommerce 商城插件自带的表单,使用简单方便。最近苦于国外机器人注册多,且没有更好的 WooCommerce 登录注册验证码插件,谷歌后找到了完美的解决方法:使用 WooCommerce 的钩子:woocommerce_register_formwoocommerce_register_post

一、自定义字段增加与验证方式

1、向注册表单中添加一个字段

woocommerce_register_form可以向注册表单中添加字段,使用较为简单,代码为:

// 定义 woocommerce_register_form 回调
function action_woocommerce_register_form() { 
    // 需要增加的字段代码
};
// 添加钩子
add_action( 'woocommerce_register_form', 'action_woocommerce_register_form', 10, 0 ); 

2、验证字段

woocommerce_register_post用于验证所增加字段,代码为:

// 定义 woocommerce_register_post 回调 
function action_woocommerce_register_post( $username, $email, $errors ) { 
    // 验证代码
};
// 添加钩子
add_action( 'woocommerce_register_post', 'action_woocommerce_register_post', 10, 3 ); 

二、实例演示

1、新增一个本站名称的字段

/* 注册表单增加本站名称 */
function salong_add_woo_register_form() {
    echo '<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wid">';
    echo '<i class="icon-wordpress"></i>';
    echo '<input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="blogname" id="blogname" value="'.$_POST['blogname'].'" placeholder="'.sprintf(__( '请输入本站名称:%s', 'salong' ),get_option('blogname')).'" required="required" />';
    echo '</p>';
 }
 add_action( 'woocommerce_register_form', 'salong_add_woo_register_form' );

2、验证本站名称是否正确

/*本站名称验证*/
function salong_add_woo_register_form_validate( $username, $email, $validation_errors ) {
    if ( $_POST['blogname'] != get_option('blogname') || empty( $_POST['blogname'] ) ) {
        $validation_errors->add( 'billing_first_name_error', __( '本地名称输入不正确!', 'salong' ));
    }
    return $validation_errors;
}
add_action( 'woocommerce_register_post', 'salong_add_woo_register_form_validate', 10, 3 );

查看下 WooCommerce 注册表单将增加了一个新的字段,提交并验证,效果如图:
WooCommerce 注册表单添加本站名称为字段的验证方式

通过这个实例也可以增加其它的字段,如果需要一开始用户在注册时都填写好地址,可直接将 WooCommerce 结算表单中的字段直接增加到注册表单字段中。