Menu

Adding custom merge tags

Advanced Forms has a variety of built-in merge tags which can be used in success messages, emails, and calculated fields. Examples include {field:NAME} and {entry_id}. Sometimes it’s desirable to add custom merge tags which we’ll cover in this guide.

Registering a new merge tag

To add merge tags we use the af/merge_tags/resolve filter. This filter will be invoked for every merge tag, that is all occurences of two braces ({}) with content in between. Because the filter is invoked for every merge tag we first need to check that we’re targeting the right tag.

The following snippet adds a new merge tag {hello} which will be replaced with the text “Hello” followed by the submitted value for a field named first_name.

<?php

function add_hello_merge_tag( $output, $tag ) {
  if ( 'hello' != $tag ) {
    return $output;
  }

  return "Hello " . af_get_field( 'first_name' );
}
add_filter( 'af/merge_tags/resolve', 'add_hello_merge_tag', 10, 2 );

Adding merge tags to the UI

When editing success messages and emails there is a dropdown which can be used to insert merge tags without having to remember their syntax. Using the af/merge_tags/custom it’s possible to add custom merge tags to this dropdown. Here’s an example of adding the previously created {hello} tag:

<?php

function register_hello_merge_tag( $tags, $form ) {
  $tags[] = array(
    'value' => 'hello',
    'label' => "Hello!",
  );

  return $tags;
}
add_filter( 'af/merge_tags/custom', 'register_hello_merge_tag', 10, 2 );