Hi,
I’d like to create a custom merge tag with modifier.
I’ve found and adapted a code to create a merge tag and it’s working well
gforms-merge-tag.php
<?php
namespace HWID\SampleCode;
class GravityForms {
public static function init() {
add_filter( 'gform_custom_merge_tags', [ 'HWID\SampleCode\GravityForms', 'custom_merge_tags' ], 10, 4 );
add_filter( 'gform_replace_merge_tags', [ 'HWID\SampleCode\GravityForms', 'replace_merge_tags' ], 10, 3 );
}
/**
This file has been truncated. show original
Here’s my code :
add_filter('gform_custom_merge_tags', 'custom_merge_tags', 10, 4);
function custom_merge_tags( $merge_tags, $form_id, $fields, $element_id ) {
$merge_tags[] = array('label' => 'conclusion', 'tag' => '{conclusion}');
return $merge_tags;
}
add_filter( 'gform_replace_merge_tags', 'replace_conclusion', 10, 7 );
function replace_conclusion( $text, $form, $entry, $url_encode, $esc_html, $nl2br, $format ) {
$custom_merge_tag = '{conclusion}';
if ( strpos( $text, $custom_merge_tag ) === false ) {
return $text;
}
$html = '<p><strong>some html</strong></p>';
$text = str_replace( $custom_merge_tag, $html, $text );
return $text;
}
I’d like to add a modifier to add a variable in the variable $html.
Something like :
$html = '<p><strong>some html ' . $modifier . ' </strong></p>';
How to do that ?
Regards
To add a modifier to your custom merge tag, you can modify the replace_conclusion
function to parse the modifier value from the merge tag and use it to construct the final HTML output.
Here is an updated version of your code with a modifier added:
add_filter('gform_custom_merge_tags', 'custom_merge_tags', 10, 4);
function custom_merge_tags( $merge_tags, $form_id, $fields, $element_id ) {
$merge_tags[] = array('label' => 'conclusion', 'tag' => '{conclusion:modifier}');
return $merge_tags;
}
add_filter( 'gform_replace_merge_tags', 'replace_conclusion', 10, 7 );
function replace_conclusion( $text, $form, $entry, $url_encode, $esc_html, $nl2br, $format ) {
preg_match('/{conclusion:(.*?)}/', $text, $matches);
if (empty($matches)) {
return $text;
}
$modifier = $matches[1];
$html = '<p><strong>some html ' . $modifier . '</strong></p>';
$text = str_replace( $matches[0], $html, $text );
return $text;
}
In the custom_merge_tags
function, we modified the tag to {conclusion:modifier}
to indicate that this tag can take a modifier value. In the replace_conclusion
function, we used the regular expression preg_match
to extract the modifier value from the merge tag. This value was then used to generate the final HTML output.
Hi Faisal,
Thank you, this is perfect.
Best regards
2 Likes
Hi Yoann,
Great to hear that the issue has been resolved! If you require any additional assistance in the future, please do not hesitate to open a new ticket.
Thank you,
Faisal
system
(system)
Closed
April 1, 2023, 1:53pm
5
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.