带有变量的PHP add_filter?

时间:2015-09-15 11:15:06

标签: php wordpress wordpress-plugin gravity-forms-plugin

这是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;
}

0 个答案:

没有答案