Fluent Forms have custom smartcodes for dynamic data that you can use for form input’s default value. By default, you will get a wide range of dynamic smartcodes including current user info, current embedded post’s information, dynamic dates, the cookie value, URL get parameters, Browser information, IP address, etc.
But If you want to add your own smartcodes then it’s not that hard actually. Let’s see how you can add your own custom smartcode.
Pushing Smartcode to the suggested list of the Form editor #
add_filter('fluentform/editor_shortcodes', function ($smartCodes) {
$smartCodes[0]['shortcodes']['{my_own_smartcode}'] = 'My Own smartcode';
return $smartCodes;
});
By using this code we have hooked the fluentform/editor_shortcodes filter hook and then added our own smartcode {my_own_smartcode} in the available list.
Pushing Smartcode to the suggested list of the Email / Confirmation Settings #
add_filter('fluentform/all_editor_shortcodes',function($data){
$customShortCodes = [
'title'=>'Custom',
'shortcodes' => ['{my_own_smartcode}' => 'my_own_smartcode',]
];
$data[] = $customShortCodes;
return $data;
},10,1);
Transforming the value #
Now our smartcode has been available and anyone can use that in any input field. Let’s transform that value with something dynamic.
/*
* To replace dynamic new smartcode the filter hook will be
* fluentform/editor_shortcode_callback_{your_smart_code_name}
*/
add_filter('fluentform/editor_shortcode_callback_my_own_smartcode', function ($value, $form) {
$dynamicValue = $form->title; // We are send current form title. You can fetch any data and return
return $dynamicValue;
}, 10, 2);
The following code will transform the value for Email and Confirmation Settings.
/*
* Create a custom shortcode for email / confirmation or other after form submit
* Usage: {my_custom_shortcode}
* @param $value string original shortcode string
* @param $parser class \FluentForm\App\Services\FormBuilder\ShortCodeParser
*/
add_filter('fluentform/shortcode_parser_callback_my_own_smartcode', function ($value, $parser) {
// If you need $submittedData
$entry = $parser::getEntry();
$submittedData = \json_decode($entry->response, true);
// if you need form ID
$formId = $entry->form_id;
return 'my custom value';
}, 10, 2);
So in this example, We are adding a composite filter fluentform_editor_shortcode_callback_my_own_smartcode. Here my_own_smartcode is the keyword of our SmartCode and then returns the current form’s title. You can definitely fetch your own value and return. Please note that You have to always return a number or string. No array or object return is allowed.
Build Geo Location SmartCode #
Let’s build something useful. Some hosting providers provide $_SEREVR variable for geo-data based on IP address. Please note that It depends on your hosting provider. So please check if these $_SEREVR variables are available or not.
- $_SERVER[‘GEOIP_COUNTRY_NAME’] – Return Country Name
- $_SERVER[‘GEOIP_CITY’] – Return City name
So let’s create a smartcode {ffc_geo_country} smartcode which will return the user’s country name.
/*
* Add the smartcode to the list
*/
add_filter('fluentform/editor_shortcodes', function ($smartCodes) {
$smartCodes[0]['shortcodes']['{ffc_geo_country}'] = 'GEO Country';
return $smartCodes;
});
/*
* Transform the smartcode
*/
add_filter('fluentform/editor_shortcode_callback_ffc_geo_country', function ($value, $form) {
if(isset($_SERVER['GEOIP_COUNTRY_NAME'])) {
return $_SERVER['GEOIP_COUNTRY_NAME'];
}
return '';
}, 10, 2);
That’s it. It’s too easy to extend Fluent Forms. Please check the project at github.
If you did not start using Fluent Forms then you should definitely give it a try. It’s Free and available in the WordPress Plugin repository