The next major update, Contact Form 7 version 5.4, is scheduled to be released on February 24. Since 5.4 brings unusually large changes, I have decided to have a beta testing period of a few weeks before the live release.
You can download a copy of the beta version plugin package from the GitHub repository. If you find any bugs, please report back to us by creating an issue on GitHub.
If you find an add-on plugin you use doesn’t work correctly with Contact Form 7 5.4, then please report the issue to the developer of that plugin, not to us. We cannot take any responsibility with regards to 3rd-party products.
Major changes of 5.4 fall into the following four groups:
- Introduction of the Sendinblue integration module
- Improved process for uploaded files
- New spinner icon with modern CSS
You can browse the full list of changes on GitHub.
Introduction of the Sendinblue integration module
As we announced last December, we have been preparing to introduce the integration module for Sendinblue, the leading CRM and email marketing platform in Europe.
This module adds Sendinblue to the Integration with Other Services menu page (Contact > Integration). See Sendinblue integration for details and the usage.
- New filter hook:
wpcf7_mask_password()used in the Integration menu page has been improved, and now you can set unmasked text lengths for both the right and left sides.
@wordpress packages that are bundled with WordPress, and it uses no jQuery, with only a few exceptions such as one used for the date picker fallback, which is based on jQuery UI.
- Some features that are outdated and unnecessary today are removed. These include the placeholder polyfill and the number field polyfill.
- New DOM event type:
wpcf7reset(fires when resetting the form)
- Previously, the event target of the
wpcf7*events was the parent
divelement of the
formelement. In 5.4, it has changed to the
formelement itself. However, since the
wpcf7*events bubble up toward the document root, this change does not affect actual uses of those DOM events, so you can continue targeting the parent
- reCAPTCHA retrieves a new token before the submission of a form. This should fix the token expiration issue.
Improved process for uploaded files
In previous versions of 5.4, most of the process for uploaded files was implemented in the file module (modules/file.php). This approach becomes troublesome when you attempt to develop a custom file-uploading module as you have to redundantly implement the entire process in your module. 5.4 moves this process into a separate file independent from modules (includes/file.php), and introduces a new approach that allows you to be able to process uploaded files in a more secure way.
WPCF7_Submissionclass become private methods, meaning you cannot call them from your custom module functions. Instead of calling these methods, make your custom form-tag support the
file-uploadingfeature, just as the built-in file module does.
- Uploaded files are processed after anti-spam verification. The process consumes a relative amount of time and resources. You can and should abort it when you know the submission is a spam.
- Input constraints validation (required field, file type & file size check, etc.) is done in a newly introduced function,
wpcf7_unship_uploaded_file(). This function returns a
WP_Errorobject when the input is invalid, or an array of file paths when it is valid.
- Output of
wpcf7_unship_uploaded_file()is passed to a validation filter function through its third parameter. When the output is
WP_Error, the function should call
invalidate()to send the error to the form.
wpcf7_unship_uploaded_file()is designed to be able to handle multiple files simultaneously uploaded through a single field.
- There is a change in the output from
WPCF7_Submission::uploaded_files(). Previously it was an array of file paths but, in 5.4, the output is an array of arrays of the file paths.
- The third parameter passed to the
wpcf7_upload_file_namefilter functions has now changed. Previously, it was a
WPCF7_FormTagobject. In 5.4, it is the
$argsarray passed to
wpcf7_unship_uploaded_file(). You can still access the
New spinner icon with modern CSS
5.4 revamps the spinner (a.k.a. Ajax-loader) icon from the ground up. Previously, an animation GIF was used for the icon. However, the new icon has been implemented by leveraging several CSS tricks that are available on all modern browsers.
- assets/ajax-loader.gif has been removed.
- Contact Form 7, in previous versions, set the
is-activeclass on the
spanelement of spinner icons to control the icon’s visibility. In 5.4, the use of
is-activeclass is removed. Instead, the
submittingclass of the
formelement is used for this purpose.