
Contact Form 7 Dynamic Text Extension – WordPress plugin
Contact Form 7 is an excellent WordPress plugin, and the CF7 DTX Plugin makes it even more awesome by adding dynamic content capabilities.
While default values in Contact Form 7 are static. CF7 DTX lets you create pre-populated fields based on other values. Some examples might include:
- Auto-filling a URL
- Auto-filling a Post ID, title, or slug
- Pre-populating a Product Number
- Referencing other content on the site
- Populating with post info
- Populating with user info
- Populating with custom fields
- Any value you can write a shortcode for
There are many more case-specific examples. I searched for a solution, and there are some decent hacks out there. Many of them are
explored in this forum topic:
Contact Form 7 Input Fields Values as PHP Get-Variables.
However, they all involved hacking the current Contact Form 7 code, which means next time the plugin is updated their edits will be
overwritten. That’s bad.
This Dynamic Text Extension plugin provides a more elegant solution that leaves the Contact Form 7 Plugin intact.
WHAT DOES IT DO?
This plugin provides a new tag type for the Contact Form 7 Plugin. It allows the dynamic generation of content for a text input box via any shortcode.
For example, it comes with several built-in shortcodes that will allow the Contact Form to be populated from any $_GET PHP variable or any info from the
get_bloginfo() function, among others. See below for included shortcodes.
Don’t see the shortcode you need on the list? You can write a custom one! Any shortcode that returns a string value can be used here. The included shortcodes just cover the most common scenarios, but the plugin provides the flexibility for you to grab any value you have access to programmatically.
HOW TO USE IT
After installing and activating the plugin, the Contact Form 7 tag generator will have 2 new tag types: Dynamic Text Field and Dynamic Hidden Field. Most of the options will be
familiar to Contact Form 7 users. There are two important fields:
Dynamic Value
This field takes a shortcode, with two important provisions:
- The shortcode should NOT include the normal square brackets (
[
and]
). So, instead of[CF7_GET key='value']
you would useCF7_GET key='value'
. - Any parameters in the shortcode must use single quotes. That is:
CF7_GET key='value'
and notCF7_GET key="value"
Uneditable Option
As these types of fields should often remain uneditable by the user, there is a checkbox to turn this option on (not applicable for hidden fields).
INCLUDED SHORTCODES
The plugin includes 2 basic shortcodes for use with the Dynamic Text extension. You can write your own as well – any shortcode will work
PHP GET Variables
Want to use a variable from the PHP $_GET
array? Just use the CF7_GET
shortcode. For example, if you want to get the foo parameter from the url
http://mysite.com?foo=bar
Enter the following into the “Dynamic Value” input: CF7_GET key='foo'
Your Content Form 7 Tag will look something like this: [dynamictext dynamicname "CF7_GET key='foo'"]
Your form’s dynamicname text input will then be pre-populated with the value of foo
, in this case, bar
PHP POST Variables
Grab variables from the $_POST
array. The shortcode is much like the GET shortcode:
Dynamic value: CF7_POST key='foo'
Your Content Form 7 Tag will look something like this: [dynamictext dynamicname "CF7_POST key='foo'"]
Blog Info
Want to grab some information from your blog like the URL or the sitename? Use the CF7_bloginfo
shortcode. For example, to get the site’s URL:
Enter the following into the “Dynamic Value” input: CF7_bloginfo show='url'
Your Content Form 7 Tag will look something like this: [dynamictext dynamicname "CF7_bloginfo show='url'"]
Your form’s dynamicname text input will then be pre-populated with your site’s URL
Post Info
Retrieve information about the current post/page that the contact form is displayed on. The shortcode works as follows:
CF7_get_post_var key='title' <-- retrieves the Post's Title
CF7_get_post_var key='slug' <-- retrieves the Post's Slug
You can also retrieve any parameter from the $post
object. Just set that as the key value, for example post_date
The Contact Form 7 Tag would look like: [dynamictext dynamicname "CF7_get_post_var key='title'"]
Need to pull data from a different post/page? Not a problem! Just specify it’s post ID like this:
Dynamic value: CF7_get_post_var key='title' post_id='245'
Contact Form 7 Tag: [dynamictext dynamic name "CF7_get_post_var key='title' post_id='245'"]
Current URL
Retrieve the current URL. The shortcode takes no parameters: CF7_URL
So your Contact Form 7 Tag would look like: [dynamictext dynamicname "CF7_URL"]
Custom Fields
Retrieve custom fields from the current post/page. Just set the custom field as the key in the shortcode.
The dynamic value input becomes: CF7_get_custom_field key='my_custom_field'
And the tag looks like this: [dynamictext dynamicname "CF7_get_custom_field key='my_custom_field'"]
For the purposes of including an email address, you can obfuscate the custom field value by setting obfuscate=’on’ in the shortcode like this:
[dynamictext dynamicname “CF7_get_custom_field key=’my_custom_field’ obfuscate=’on’”]
Current User Info
Get data about the current, logged-in user.
Dynamic value: CF7_get_current_user key='user_displayname'
CF7 Tag: [dynamictext dynamicname "CF7_get_current_user"]
Valid values for key
include:
ID
user_login
display_name
user_email
user_firstname
user_lastname
user_description
But also custom meta user keys!
For the purposes of including an email address, you can obfuscate the value by setting obfuscate=’on’ in the shortcode like this:
[dynamictext dynamicname “CF7_get_current_user key=’user_email’ obfuscate=’on’”]
Referrer URL
Get the referral URL, if it exists. Note that this is not necessarily reliable as not all browsers send this data.
CF7 Tag: [dynamictext dynamicname "CF7_referrer"]