The gform_calculation_formula Gravity Forms PHP function/filter/action allows you to dynamically modify the formula of a number field calculation or calculated product field.
Table of contents
Usage
add_filter('gform_calculation_formula', 'my_custom_function', 10, 4);
function my_custom_function($formula, $field, $form, $entry) {
// your custom code here
return $formula;
}
Parameters
$formula(string) – The calculation formula.$field(Field Object) – The calculation field currently being processed.$form(Form Object) – The form currently being processed.$entry(Entry Object) – The entry currently being processed.
More information
See Gravity Forms Docs: gform_calculation_formula
Examples
Add a fixed value to the formula
In this example, we will add a fixed value of 5 to the formula when the form ID is 10 and the field ID is 3.
add_filter('gform_calculation_formula', 'add_fixed_value', 10, 4);
function add_fixed_value($formula, $field, $form, $entry) {
if ($form['id'] == 10 && $field->id == 3) {
$formula .= '+5';
}
return $formula;
}
Multiply the formula by a percentage
In this example, we will multiply the formula by 1.2 (120%) when the form ID is 5 and the field ID is 2.
add_filter('gform_calculation_formula', 'multiply_by_percentage', 10, 4);
function multiply_by_percentage($formula, $field, $form, $entry) {
if ($form['id'] == 5 && $field->id == 2) {
$formula .= '*1.2';
}
return $formula;
}
Apply a discount based on a coupon code
In this example, we will apply a 10% discount to the formula if a specific coupon code is entered in field ID 4.
add_filter('gform_calculation_formula', 'apply_coupon_discount', 10, 4);
function apply_coupon_discount($formula, $field, $form, $entry) {
if ($form['id'] == 8 && $field->id == 1 && $entry[4] == 'DISCOUNT10') {
$formula .= '*0.9';
}
return $formula;
}
Modify the formula based on a specific date
In this example, we will double the formula if the form is submitted on or after May 1st, 2023.
add_filter('gform_calculation_formula', 'double_formula_on_date', 10, 4);
function double_formula_on_date($formula, $field, $form, $entry) {
$current_date = strtotime('today');
$promo_start_date = strtotime('2023-05-01');
if ($current_date >= $promo_start_date) {
$formula .= '*2';
}
return $formula;
}