gform_merge_tag_data

gform_merge_tag_data

DescriptionUsageParametersExamples1. Provide Custom Data2. Entry creatorChangelogSource Code

Description
Use this filter to add, remove or modify the data that will be used to replace merge tags found in the specified string. This includes the $entry data used to replace field-based merge tags. Note: this filter is not triggered during form display, it is intended for implementing custom merge tags which are used in notifications, confirmations, and feed add-ons.
Usage
The following would apply to all forms.
add_filter( 'gform_merge_tag_data', 'your_function_name', 10, 4 );

Parameters

$data array
Data that will be used to replace merge tags. Array keys represent available merge tags. Values can be accessed by specifying a property: {entry:date_created}. Value can be an array of data or a callable function.
$data['customTag'] = 'my_func_to_retrieve_data';
$data['anotherTag'] = array(
'testKey' => 'Test Value'
);
Callable functions will be passed the current $entry and $form objects.
function my_func_to_retrieve_data( $entry, $form ) {
return array(
'key1' => 'value1',
'key2' => 'value2'
);
}
This data can be accessed with merge tags by specifying the data key and the desired property. Examples:

{customTag:key1} outputs 「value1」
{anotherTag:testKey} outputs 「Test Value」

$text string
The current text that will be parsed for merge tags.

$form Form Object
The current form object.

$entry Entry Object
The current form object.

Examples
1. Provide Custom Data
add_filter( 'gform_merge_tag_data', 'my_custom_merge_tag_data', 10, 4 );
function my_custom_merge_tag_data( $data, $text, $form, $entry ) {
$data['myCustomTag'] = array(
'key1' => 'Value One',
'key2' => 'Value Two'
);
return $data;
}

2. Entry creator
This example shows how to add a {created_by} merge tag e.g. {created_by:roles} to return a comma separated string containing the roles assigned to the user who created the entry.
add_filter( 'gform_merge_tag_data', function ( $data, $text, $form, $entry ) {
$data['created_by'] = array();
if ( ! empty( $entry['created_by'] ) ) {
$user = new WP_User( $entry['created_by'] );
$data['created_by'] = get_object_vars( $user->data );
$data['created_by']['first_name'] = $user->get( 'first_name' );
$data['created_by']['last_name'] = $user->get( 'last_name' );
$data['created_by']['roles'] = implode( ', ', $user->roles );
}

return $data;
}, 10, 4 );

Changelog

2.1.1.11
Added the $entry parameter.
2.0
Introduced.

Source Code
This filter is located in GFCommon::replace_variables() in common.php.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注