我具有通过第三方服务处理销售的功能,处理结果并返回具有状态"成功"或"无效"的数组。此销售电话是使用应用于特定表单的gform_after_submission钩进行的。
我需要做的是将"成功"或"无效"存储在数组中,作为一个变量,我可以使用gform_validation hook将其传递给函数以验证或无效。
。我正在声明函数中的变量,例如:
function foo {
...code to sell product through API...
$status = $checkoutShoppingCartRequest['Result']['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
之后运行
无论如何,假设您可以找到较早运行的钩子,我要做的就是使用瞬态API的set_transient()
和get_transient()
函数存储一个为每个提交的表单的唯一变量。例如,您可以以随机ID填充的每个形式创建一个隐藏的字段。使用此随机ID作为存储和检索成功/无效结果的键。
$status
这是一个本地变量,在尝试在if条件下使用它之前,它从未定义过。因此,它总是null
。也许你错过了
$status = $validation_result['Result']['Status'];
或类似的东西在检查条件之前。