无法在过滤器中定位重力形式输入或字段ID

时间:2019-10-23 20:49:34

标签: php wordpress gravity-forms-plugin

我有一个过滤/验证脚本,该脚本仅接受来自特定域的电子邮件。这工作得很好,但是我需要将其放在输入ID中的特定位置上:

根据https://docs.gravityforms.com/gform_field_validation/#11-email-validation-by-third-party-api#usage

  

您还可以通过添加表单ID和字段来定位特定字段   挂钩名称后的id。

     

//The following declaration targets field 1 in form 6 add_filter(   'gform_field_validation_6_1', 'your_function_name', 10, 4 );

当前我的代码如下:

add_filter( 'gform_field_validation', function ( $result, $value, $form, $field ) {
    if ( ! $result['is_valid'] && $field->get_input_type() === 'email' && strpos($field->get_field_input(), 'company.com') === true) {
        $result['is_valid'] = true;
        $result['message']  = '';
    } else {
        $result['is_valid'] = false;
        $result['message']  = 'E-Mail must be a company.com address';
    }

    return $result;
}, 10, 4 );

我的表单和输入ID分别确认为1和13:

enter image description here

当我将代码更改为以下代码时,脚本停止工作:

add_filter( 'gform_field_validation_13_1', function ( $result, $value, $form, $field ) {
    if ( ! $result['is_valid'] && $field->get_input_type() === 'email' && strpos($field->get_field_input(), 'company.com') === true) {
        $result['is_valid'] = true;
        $result['message']  = '';
    } else {
        $result['is_valid'] = false;
        $result['message']  = 'E-Mail must be a company.com address';
    }

    return $result;
}, 10, 4 );

还有其他方法需要检查我的表单ID吗?这里缺少什么?

1 个答案:

答案 0 :(得分:1)

文档gform_field_validation_6_1中的文档表示它以field 1中的form 6为目标。

您的表单ID为1,输入字段ID为13,因此过滤器应为gform_field_validation_1_13