The gform_pre_replace_merge_tags filter allows you to replace default merge tags before they are replaced by GFCommon::replace_variables().
Usage
add_filter('gform_pre_replace_merge_tags', 'replace_custom_merge_tags', 10, 7);
Parameters
$text
(string): The current text in which merge tags are being replaced.$form
(Form Object): The current form.$entry
(Entry Object): The current entry.$url_encode
(boolean): Whether or not to encode any URLs found in the replaced value.$esc_html
(boolean): Whether or not to encode HTML found in the replaced value.$nl2br
(boolean): Whether or not to convert newlines to break tags.$format
(string): Determines how the value should be formatted. Default ishtml
.
More information
See Gravity Forms Docs: gform_pre_replace_merge_tags
Examples
Replace {form_title} with custom text
This example demonstrates how to replace the {form_title} merge tag with your own custom text.
add_filter('gform_pre_replace_merge_tags', function($text, $form, $entry, $url_encode, $esc_html, $nl2br, $format) { $merge_tag = '{form_title}'; if (strpos($text, $merge_tag) === false || empty($form)) { return $text; } return str_replace($merge_tag, 'Your Custom Text', $text); }, 10, 7);
Replace {custom_merge_tag} with entry value
This example demonstrates how to create a custom merge tag {custom_merge_tag} and replace it with a specific entry value.
add_filter('gform_pre_replace_merge_tags', function($text, $form, $entry, $url_encode, $esc_html, $nl2br, $format) { $merge_tag = '{custom_merge_tag}'; if (strpos($text, $merge_tag) === false || empty($entry)) { return $text; } return str_replace($merge_tag, $entry['1'], $text); }, 10, 7);
Replace {total} with formatted currency
This example demonstrates how to replace the {total} merge tag with a formatted currency value.
add_filter('gform_pre_replace_merge_tags', function($text, $form, $entry, $url_encode, $esc_html, $nl2br, $format) { $merge_tag = '{total}'; if (strpos($text, $merge_tag) === false || empty($entry)) { return $text; } $formatted_total = money_format('%i', $entry['total']); return str_replace($merge_tag, $formatted_total, $text); }, 10, 7);
Replace {current_date} with today’s date
This example demonstrates how to replace the {current_date} merge tag with today’s date in a custom format.
add_filter('gform_pre_replace_merge_tags', function($text, $form, $entry, $url_encode, $esc_html, $nl2br, $format) { $merge_tag = '{current_date}'; if (strpos($text, $merge_tag) === false) { return $text; } $date = date('F j, Y'); return str_replace($merge_tag, $date, $text); }, 10, 7);