You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为WordPress WooCommerce注册自定义比特币地址字段添加正则验证

你可以直接修改原有wooc_validate_extra_register_fields校验函数,增加正则匹配逻辑即可,修改后的完整代码如下:

function wooc_validate_extra_register_fields( $username, $email, $validation_errors ) {
    // 原有非空校验逻辑
    if ( isset( $_POST['billing_first_name'] ) && empty( $_POST['billing_first_name'] ) ) {
        $validation_errors->add( 'billing_first_name_error', __( 'Refund Address is required!', 'woocommerce' ) );
    } 
    // 新增比特币地址格式正则校验
    elseif ( isset( $_POST['billing_first_name'] ) ) {
        // 先对提交内容做安全过滤
        $btc_refund_address = sanitize_text_field( $_POST['billing_first_name'] );
        // PHP正则需在外层添加分隔符,此处使用/作为分隔符
        if ( ! preg_match( '/^(bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$/', $btc_refund_address ) ) {
            $validation_errors->add( 'billing_first_name_error', __( '请输入有效的比特币退款地址格式', 'woocommerce' ) );
        }
    }
  
    return $validation_errors;
}
add_action( 'woocommerce_register_post', 'wooc_validate_extra_register_fields', 10, 3 );

改动说明

  • 保留了原有的必填校验逻辑,保证退款地址字段不能为空
  • 新增的校验逻辑中先对提交的字段值做了安全过滤,避免恶意内容注入风险
  • 使用PHP内置preg_match()函数执行正则匹配,地址格式不符合规则时抛出错误提示
  • 给正则规则外层添加了PHP语法要求的/分隔符,不会出现正则解析报错

额外注意

你当前借用了WooCommerce原生billing_first_name(账单姓名字段)存储比特币退款地址,如果后续需要使用原生账单信息功能,建议更换为独立的自定义字段名存储,避免数据冲突。

内容的提问来源于stack exchange,提问作者Nath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:54:03