我有一个函数可以通过第三方服务处理销售、处理结果并返回状态为“成功”或“无效”的数组。此销售电话是使用应用于特定表单的 gform_after_submission Hook 进行的。
我需要做的是将“成功”或“无效”结果作为变量存储在数组中,稍后我可以使用 gform_validation Hook 将其传递给函数以验证或使信用卡字段无效。
我在函数中声明变量,如下所示:
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' );
我已经尝试通过多种不同的方式传递变量,通过全局变量和 session 等。
我是 GF 开发的新手,所以我确信我遗漏了一些东西。如果有任何指示,我将不胜感激。
最佳答案
gform_after_submission
操作 Hook 在 gform_validation
之后运行。
无论如何,假设你能find a hook如果运行得更早,我要做的是使用 Transients API 为每个提交的表单存储一个唯一变量的 set_transient()
和 get_transient()
函数。例如,您可以在每个用 random ID 填充的表单中创建一个隐藏字段.使用此随机 ID 作为 key 来存储和检索成功/无效结果。
关于php - 重力形式自定义验证过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30353054/