Data Source for Contact Form 7 plugin allows populating the "Contact Form 7" fields (text, email, URL, drop-down menu, ...
Data Source for Contact Form 7 plugin allows populating the “Contact Form 7” fields (text, email, URL, drop-down menu, …) with data stored in external data sources, like a database, CSV file, URL parameters, users information, post data, taxonomies, Advanced Custom Fields (ACF), and JSON objects.
Data Source for Contact Form 7 includes two new controls in the controls bar of Contact Form 7, recordset and recordset field link. The “recordset” control reads the information from the external data source (a database, a CSV file, or any other data source supported), and the “recordset field link” control for linking the recordsets and form fields to populate them with the recordset data.
A form can include several “recordset” fields, and it is possible to link multiple “recordset field link” controls to the same recordset.
How to create the simplest contact form from our practical examples.
The plugin includes other complementary controls in the controls bar in addition to the “recordset” and “recordset field link”. The “Print Form” button for printing the form area, “Data Table” control for inserting an advanced table with the recordset records, “copy to clipboard” functionality for copying the values of the fields into the clipboard, and the “Search box in dropdown menu” functionality to make easy the selection in long dropdown menus.
Data Source for Contact Form 7 includes two new controls in the controls bar of Contact Form 7, recordset and recordset field link.
The recordset control reads the information from the external data source and makes it available on the form. A recordset field can read one or many records from the data source.
To insert a recordset field in the form, press the “recordset” button in the controls bar. This action opens a dialog to define the recordset.
The insertion dialog includes common attributes for all data sources and specific attributes for the data source selected.
The “recordset field link” control links a recordset field to other fields in the form to populate them with the recordset data.
To insert a link field in the form, press the “recordset field link” button in the controls bar. This action opens a dialog to define the relationship between a recordset and a form’s field.
The link dialog includes the attributes to define the relationship between the recordset field and the form’s fields.
Get the information of the registered user and populate the form fields for his name and email:
<label> Your name [text* your-name] </label> <label> Your email [email* your-email] </label> <label> Subject [text* your-subject] </label> <label> Your message (optional) [textarea your-message] </label> [cf7-recordset id="cf7-recordset-434" type="user" attributes="first_name, user_email" logged="1"] [cf7-link-field recordset="cf7-recordset-434" field="your-name" value="first_name"] [cf7-link-field recordset="cf7-recordset-434" field="your-email" value="user_email"] [submit "Submit"]
Filling a plain text in the form with the first name and last name of the logged user:
<label> Hello <span id="first-name"></span> <span id="last-name"></span></label> <label> Enter your address [textarea address] </label> [cf7-recordset id="cf7-recordset-434" type="user" attributes="first_name, last_name" logged="1"] [cf7-link-field recordset="cf7-recordset-434" field="first-name" value="first_name"] [cf7-link-field recordset="cf7-recordset-434" field="last-name" value="last_name"] [submit "Submit"]
Populates the list of WooCommerce products and get the price of the selected one:
<label>Products List [select menu-719]</label> <label>Product Price [number number-534]</label> [cf7-recordset id="cf7-recordset-619" type="database" engine="mysql" query="SELECT ID,post_title,meta_value as price FROM {wpdb.posts} posts, {wpdb.postmeta} meta WHERE posts.post_type='product' AND posts.ID=meta.post_id AND meta.meta_key='_regular_price'"] [cf7-link-field recordset="cf7-recordset-619" field="menu-719" value="ID" text="post_title"] [cf7-link-field recordset="cf7-recordset-619" field="number-534" value="price" condition="record['ID']=={field.menu-719}"] [submit "Submit"]
Using templates to create complex data structures. Displaying the title and excerpt of every published post:
<div id="posts-list"></div> <template id="summary"> <p style="font-style:bold">{attribute.post_title}</p> <p>{attribute.post_excerpt}</p> </template> [cf7-recordset id="cf7-posts" type="post" attributes="post_title,post_excerpt" condition="post_status='publish' AND post_type='post'"] [cf7-link-field recordset="cf7-posts" field="posts-list" value="{template.summary}"]
The form includes a template tag to design a complex data structure. To access the records attributes from the template, use {attribute.attribute-name} format. Ex. {attribute.post_title}
You can use the templates for the fields’ values or texts. The format for referring to templates is {template.template-id}. You should replace “template-id” with the id of the template tag. Ex. {template.summary}
[cf7-link-field recordset="cf7-posts" field="posts-list" value="{template.summary}"]
The recordset fields trigger the “cf7-recordset” event after receiving the information from the data source, allowing you to access this information with Javascript. In this example, the recordset field reads motivational phrases from a third-party service and displays the first of them into a DIV tag on the form.
To install the Data Source for Contact Form 7 plugin, follow these steps:
Data Source Controls
Recordset Insertion Dialog
Recordset Field Link Dialog
Data Sources List
URL Parameters Data Source
User Information Data Source
Posts Data Source
Taxonomies Data Source
Database Data Source
Advanced Custom Fields (ACF) Data Source
CSV Data Source
JSON Data Source
Javascript Function Data Source
Server Side Code Data Source
Extensions
Complementary Controls
Server Side Extension.
A: Yes, using Link fields, you can use the records in the recordset fields to populate any CF7 field in the form.
A: Fields like number, tel, text area, text, etc. require only the “Attribute for value”
However, CF7 includes other controls like drop-down menus, radio buttons, and checkboxes with multiple choices, where every choice requires a value and text. For these fields, should be populated the attribute for text in the dialog.
A: The recordset control read records from the data source, but you might want to populate the form’s fields with only some of these records. The “Condition for filtering” attribute allows filtering the records to use.
A: Yes, you can. To use the values of other fields for filtering, you should use the format: {field.field-name}
For example, {field.email}, {field.first-name}, {field.last-name}
A: Yes, you can. Similarly to the form’s fields, you can refer to javascript variables using the format: {var.variable-name}
A: The plugin encodes some characters because they are not supported by the shortcodes, like the square brackets, double quotes, greater than, and less than symbols.