【问题标题】:Ninja Forms API - Can't update field value using ninja_forms_submit_data filterNinja Forms API - 无法使用 ninja_forms_submit_data 过滤器更新字段值
【发布时间】:2019-05-10 21:14:39
【问题描述】:

我正在使用此代码循环字段:

add_filter( 'ninja_forms_submit_data', function ( $form_data ) {

    $form_model = Ninja_Forms()->form( $form_data[ 'id' ] );

    foreach( $form_data[ 'fields' ] as $field ){
        $field_model = $form_model->get_field( $field[ 'id' ] );
        $field_key = $field_model->get_setting( 'key' );
        if( 'subject_test' == $field_key ){
            $field_model->update_settings( 'value', 'foo' )->save();
        }
    }

    return $form_data;
} );

subject_test 是我要更改值的字段的键。

我尝试了许多其他方法来更改值,但似乎没有任何效果。

谁能指出我正确的方向?

【问题讨论】:

    标签: wordpress forms filter ninja-forms


    【解决方案1】:

    知道了!

    $form_data[ 'fields' ][ $field_id ][ 'value' ] = 'foo';
    

    【讨论】:

    • 请给出更详细的答案,您的问题是指正在使用的密钥,但您的答案只是使用ID...您更改了什么?这是如何工作的?
    【解决方案2】:

    @Lee 这是我使用的完整功能:

    // Change email_admin based on subject using a hidden field
    add_filter( 'ninja_forms_submit_data', function ( $form_data ) {
        $form_model = Ninja_Forms()->form( $form_data[ 'id' ] );
        foreach( $form_data[ 'fields' ] as $field ) { // Loop through fields
            $field_model = $form_model->get_field( $field[ 'id' ] );
            $field_key = $field_model->get_setting( 'key' );
            $field_id = $field[ 'id' ];
            if( 'subject_value' == $field_key ) {
                $subject_value = '';
                $subject_value = $form_data[ 'fields' ][ $field_id ][ 'value' ]; // Take subject dropdown value.
                $email_redirect = get_string_between($subject_value, '{', '}'); // Get email from subject value.
                $new_subject = delete_all_between($subject_value, '{', '}'); // Remove {email} from subject value.
                $form_data[ 'fields' ][ $field_id ][ 'value' ] = $new_subject; // Assign new subject value.
            } elseif ( 'subject_send' == $field_key ) {
                if ( isset($email_redirect) )
                    $form_data[ 'fields' ][ $field_id ][ 'value' ] = $email_redirect; // Give hidden field the email which is used in send to field.
            } else {
                continue;
            }
        }
        return $form_data;
    } );
    

    【讨论】:

      猜你喜欢
      • 2017-12-09
      • 1970-01-01
      • 2022-08-18
      • 2021-08-14
      • 2021-11-24
      • 2022-01-15
      • 2015-02-21
      • 2015-03-12
      • 2017-03-14
      相关资源
      最近更新 更多