The gform_shortcode_ACTION filter in Gravity Forms is used to implement custom shortcode actions.
Usage
To use the filter, specify the action name after the gform_shortcode_ hook name:
add_filter('gform_shortcode_form_property', 'custom_action', 10, 3);
Parameters
- $shortcode_string (string): The full shortcode string.
- $attributes (array): Array of the shortcode attributes.
- $content (string): The content text of the shortcode if it exists.
More information
See Gravity Forms Docs: gform_shortcode_ACTION
Placement: This code may be placed in the functions.php
file of your active theme OR in your plugin code.
Source Code: This filter is located in GFForms::parse_shortcode() in gravityforms.php
.
Examples
The examples below assume the following shortcode setup on a page:
[gravityform id="22" name="Poll" action="form_property" property="title"] my content [/gravityform]
Adding a custom action
This example demonstrates how to use the gform_shortcode_form_property filter to display the title of the form:
add_filter('gform_shortcode_form_property', 'custom_action', 10, 3); function custom_action($string, $attributes, $content) { // Extract the shortcode attributes into variables extract(shortcode_atts(array( 'title' => true, 'description' => true, 'id' => 0, 'name' => '*', 'field_values' => "", 'ajax' => false, 'tabindex' => 1, 'action' => 'form', 'property' => '*' ), $attributes)); // Get the form object $form = RGFormsModel::get_form_meta($id); // Retrieve the "property" from the form object $property_value = $form[$property]; $info = "The property to retrieve is {$property} with value {$property_value}."; return $info; }
Output hidden comment for inactive forms
This example shows how to include an HTML comment in the page source code when a form is set to inactive:
add_filter('gform_shortcode_form', function ($shortcode_string, $attributes) { if (empty($shortcode_string)) { $shortcode_string = sprintf('<!--Form (%s) is inactive.-->', rgar($attributes, 'name', rgar($attributes, 'id'))); } return $shortcode_string; }, 10, 2);