这是Gravity Forms的片段中的代码,我已将其放在我的functions.php中。 我想这是一个非常简单的问题,如果我能够解释它。
我的add_filter调用正确,但它们没有传递任何变量,所以我的动态变量不起作用。例如,当gform_limit_by_field_values执行时,$ sum_limit将始终是数组中的最后一个数字。有没有办法在过滤器中传递变量?
$sum_form_id_arr = [1, 2];
$sum_field_id_arr = [6, 6];
$sum_limit_arr = [20, 30];
$sum_form_id;
$sum_field_id;
$sum_limit;
$sum_limit_message = 'Sorry, this show is sold out.';
$sum_validation_message = 'You ordered %1$s tickets. There are only %2$s tickets left.';
for ($i=0; $i < count($sum_form_id_arr); $i++) {
$sum_form_id = $sum_form_id_arr[$i];
$sum_field_id = $sum_field_id_arr[$i];
$sum_limit = $sum_limit_arr[$i];
add_filter("gform_pre_render_$sum_form_id", 'gform_limit_by_field_values');
add_filter("gform_validation_$sum_form_id", 'gform_limit_by_field_values_validation');
}
function gform_limit_by_field_values($form) {
global $sum_field_id, $sum_limit, $sum_limit_message;
$sum = gform_get_field_values_sum($form['id'], $sum_field_id);
if($sum >= $sum_limit)
add_filter('gform_get_form_filter', create_function('', 'return "' . $sum_limit_message . '";'));
return $form;
}