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

如何在WordPress Elementor/Astra/Forminator中验证推荐人用户ID是否存在?

解决方法:自定义注册表单的推荐人ID验证

一、Forminator 实现自定义验证

Forminator虽无直接手动SQL输入选项,但可通过WordPress钩子实现安全的自定义验证:

  • 先给「sponsor user id」字段设置唯一字段名(如sponsor_id),在Forminator表单编辑的字段高级选项中配置。
  • 在主题functions.php或自定义插件中添加以下代码:
add_filter( 'forminator_custom_form_submit_errors', 'validate_sponsor_user_id', 10, 3 );
function validate_sponsor_user_id( $errors, $form_id, $field_data_array ) {
    // 替换为你的表单ID和目标字段名
    $target_form_id = 123;
    $sponsor_field_name = 'sponsor_id';
    
    if ( $form_id !== $target_form_id ) {
        return $errors;
    }
    
    // 获取用户输入的推荐人ID
    $sponsor_id = null;
    foreach ( $field_data_array as $field ) {
        if ( $field['name'] === $sponsor_field_name ) {
            $sponsor_id = $field['value'];
            break;
        }
    }
    
    // 验证ID有效性(用WordPress内置函数避免SQL注入)
    if ( $sponsor_id && !get_user_by( 'id', absint( $sponsor_id ) ) ) {
        $errors[ $sponsor_field_name ] = '输入的推荐人ID不存在,请检查后重试';
    }
    
    return $errors;
}

二、Elementor 表单的验证实现

若使用Elementor Pro表单模块,可通过后端钩子实现验证:

  • 给「推荐人ID」字段设置自定义ID(如sponsor-id)。
  • 添加以下PHP代码到主题functions.php:
add_action( 'elementor_pro/forms/validation', 'elementor_validate_sponsor_id', 10, 2 );
function elementor_validate_sponsor_id( $record, $handler ) {
    $sponsor_id = $record->get_field_value( 'sponsor-id' );
    
    if ( $sponsor_id && !get_user_by( 'id', absint( $sponsor_id ) ) ) {
        $handler->add_error( 'sponsor-id', '推荐人ID不存在,请重新输入' );
    }
}

注:可配合前端JS做即时提示,但后端验证必须保留,防止前端绕过。

三、Astra 框架的支持情况

Astra是主题框架,仅负责样式与布局,本身不提供表单验证功能。但它完全兼容Forminator、Elementor Pro等表单插件,你可以通过上述钩子方法实现推荐人ID验证,Astra不会对此造成限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:51:22