我有一个通过第三方服务处理销售的功能,处理结果并返回一个数组,状态为“成功”或“无效”.此销售电话是使用应用于特定表单的gform_after_submission钩子进行的.
我需要做的是将“成功”或“无效”结果存储在数组中,作为一个变量,稍后可以使用gform_validation钩子传递给函数来验证或使信用卡字段无效.
我在函数中声明变量,就像这样:
function foo { ...code to sell product through API... $status = $checkoutShoppingCartRequest['Result']['Status']; }
当我在函数中打印变量$status时,它显示成功或无效,就像它应该.
这里是其他函数,我需要使用这个变量,传递给gform_validation,每次失败,无论成功还是无效结果:
function MBvalidate( $validation_result ) { $form = $validation_result['form']; if ( $status !== "Success") { $validation_result['is_valid'] = false; foreach( $form['fields'] as &$field ) { if ( $field->id == '34' ) { $field->Failed_validation = true; $field->validation_message = 'Your credit card could not be processed.'; break; } } } //Assign modified $form object back to the validation result $validation_result['form'] = $form; return $validation_result; } add_filter( 'gform_validation_47','MBvalidate' );
我已经尝试通过全局变量和会话等传递变量多种不同的方式.
我是GF发展的新人,所以我确信我缺少一些东西.我会赞赏任何方向.
gform_after_submission操作钩子在gform_validation之后运行.
无论如何,假设您可以使用更早的find a hook,那么我将使用Transients API的set_transient()和get_transient()函数为每个提交的表单存储一个唯一的变量.例如,您可以在使用random ID填充的每个表单中创建一个隐藏字段.使用该随机ID作为存储和检索“成功/无效”结果的键.