Using Gravity Forms ‘gform_replace_merge_tags’ PHP action

The gform_replace_merge_tags filter allows you to replace custom merge tags in Gravity Forms.

Usage

add_filter('gform_replace_merge_tags', 'your_custom_function', 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 is html.

More information

See Gravity Forms Docs: gform_replace_merge_tags

Examples

Replace a custom merge tag

Replace a custom merge tag with the corresponding value.

add_filter('gform_replace_merge_tags', 'replace_download_link', 10, 7);

function replace_download_link($text, $form, $entry, $url_encode, $esc_html, $nl2br, $format) {
    $custom_merge_tag = '{download_link}';
    if (strpos($text, $custom_merge_tag) === false) {
        return $text;
    }
    $download_link = gform_get_meta($entry['id'], 'gfmergedoc_download_link');
    $text = str_replace($custom_merge_tag, $download_link, $text);
    return $text;
}

Replace {entry_time}

Replace a custom merge tag with the entry date and time.

add_filter('gform_replace_merge_tags', function ($text, $form, $entry, $url_encode, $esc_html, $nl2br, $format) {
    $merge_tag = '{entry_time}';
    if (strpos($text, $merge_tag) === false || empty($entry) || empty($form)) {
        return $text;
    }
    return str_replace($merge_tag, GFCommon::format_date(rgar($entry, 'date_created'), false, 'Y/m/d'), $text);
}, 10, 7);

Replace {transaction_id}

Replace a custom merge tag with the payment transaction id.

add_filter('gform_replace_merge_tags', function ($text, $form, $entry, $url_encode) {
    $merge_tag = '{transaction_id}';
    if (strpos($text, $merge_tag) === false || empty($form) || empty($entry)) {
        return $text;
    }
    $transaction_id = esc_html(rgar($entry, 'transaction_id'));
    return str_replace($merge_tag, $url_encode ? urlencode($transaction_id) : $transaction_id, $text);
}, 10, 4);