Ninja 使用 get_user_meta 形成隐藏字段的渲染值
Ninja Forms Rendering Values to Hiden Field with get_user_meta
我正在尝试为必须使用 Zapier 进行文件同步的第三方应用程序获取客户端 ID,这与使用 WordPress 创建的用户 ID 是分开的。我需要根据表单的名字创建一个特定的客户端 ID。例如:client-123.
我正在从我的 Ninja 表单中获取我的表单字段值,如下所示:
add_action( 'eks_ninja_forms_processing', 'my_ninja_forms_processing_callback');
function my_ninja_forms_processing_callback( $form_data ){
$user_id = get_current_user_id();
$form_id = $form_data[ 'form_id' ];
$form_fields = $form_data[ 'fields' ];
foreach( $form_fields as $field ){
$field_id = $field[ 'id' ];
$field_key = $field[ 'key' ];
$field_value = $field[ 'value' ];
if( 'firstname_1603293500271' == $field[ 'key' ] )
update_user_meta( $user_id, 'child_name', $field_value );
}
}
}
然后我想做的是将用户元内容传递到隐藏字段,如下所示:
function nf_hidden_field_values( $value, $field_type, $field_settings ) {
global $post;
$value = '';
$user_id = get_current_user_id();
if ( $field_settings['key'] == 'hidden_1603696346151' ) {
$client_name = get_user_meta( $user_id, 'child_name', true )
$num = wp_rand( 1, 100 );
$value = $client_name.$num;
}
return $value;
}
add_filter( 'ninja_forms_render_default_value', 'nf_hidden_field_values', 9999, 3 );
隐藏字段作为客户端 ID 发送到 Zapier 以同步到另一个应用程序。问题是 ninja_forms_render_default_value 过滤器似乎在代码的第一部分更新用户元数据之前执行。如果用户元数据为空,则 'child_name' 元数据为空。如果它有一个值并且我想更新它它是旧值。所以我总是落后一步。
理想情况下,过滤器将最后执行,但我不确定这是否可能。我尝试了一个包装函数,但这没有用,我很确定这不是一个好的方法。
我可以跳过尝试使用 'child_name' 元和硬编码的东西,但这并不理想。
非常感谢任何帮助。
克里斯
看看 'ninja_forms_submit_data'-过滤器,您可以在那里更改 field-data 以及 user_meta_data。
https://developer.ninjaforms.com/codex/submission-processing-hooks/
我正在尝试为必须使用 Zapier 进行文件同步的第三方应用程序获取客户端 ID,这与使用 WordPress 创建的用户 ID 是分开的。我需要根据表单的名字创建一个特定的客户端 ID。例如:client-123.
我正在从我的 Ninja 表单中获取我的表单字段值,如下所示:
add_action( 'eks_ninja_forms_processing', 'my_ninja_forms_processing_callback');
function my_ninja_forms_processing_callback( $form_data ){
$user_id = get_current_user_id();
$form_id = $form_data[ 'form_id' ];
$form_fields = $form_data[ 'fields' ];
foreach( $form_fields as $field ){
$field_id = $field[ 'id' ];
$field_key = $field[ 'key' ];
$field_value = $field[ 'value' ];
if( 'firstname_1603293500271' == $field[ 'key' ] )
update_user_meta( $user_id, 'child_name', $field_value );
}
}
}
然后我想做的是将用户元内容传递到隐藏字段,如下所示:
function nf_hidden_field_values( $value, $field_type, $field_settings ) {
global $post;
$value = '';
$user_id = get_current_user_id();
if ( $field_settings['key'] == 'hidden_1603696346151' ) {
$client_name = get_user_meta( $user_id, 'child_name', true )
$num = wp_rand( 1, 100 );
$value = $client_name.$num;
}
return $value;
}
add_filter( 'ninja_forms_render_default_value', 'nf_hidden_field_values', 9999, 3 );
隐藏字段作为客户端 ID 发送到 Zapier 以同步到另一个应用程序。问题是 ninja_forms_render_default_value 过滤器似乎在代码的第一部分更新用户元数据之前执行。如果用户元数据为空,则 'child_name' 元数据为空。如果它有一个值并且我想更新它它是旧值。所以我总是落后一步。
理想情况下,过滤器将最后执行,但我不确定这是否可能。我尝试了一个包装函数,但这没有用,我很确定这不是一个好的方法。
我可以跳过尝试使用 'child_name' 元和硬编码的东西,但这并不理想。
非常感谢任何帮助。
克里斯
看看 'ninja_forms_submit_data'-过滤器,您可以在那里更改 field-data 以及 user_meta_data。
https://developer.ninjaforms.com/codex/submission-processing-hooks/