This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

A Forms


A wordpress plugin that allows you to add a form on your website. It’s quite easy to configure, some what like C Forms II, but you have the ability to get regular updates and its available on the WordPress Plugin site.

Since version 2.0.2, you can now create advanced validation rules. There are unlimited amount of validation rules that you could have in a form which makes it difficult to manage using a UI. In A Forms you can now create a Global variable called $GLOBALS[“aforms_additional_validations_for_4”] (where 4 is the id of the form) in your themes function file and set a validation array to it.

For example lets say you have an email field, a contact field and a preferred method of contact field. The preferred method of contact field is a checkbox field with the values Email and Phone. You want to make sure your visitor fills in Phone if Phone is selected by the preferred method of contact. All you need to do is assign an array like $GLOBALS[“aforms_additional_validations_for_4”][“a_form_contact_us_phone”] = “required” to $GLOBALS[“aforms_additional_validations_for_4”] (remember to replace the 4 with your forms id) if the phone field is empty while the preferred method of contact is Phone.

Here is some sample code:

add_action( ‘init’, ‘register_a_forms_additional_validations’ );
function register_a_forms_additional_validations() {
$GLOBALS[“aforms_additional_validations_for_4”] = array();
if (isset($_POST[“a_form_contact_us_preferred_method_of_contact_1”]) && isset($_POST[“a_form_contact_us_phone”]) && $_POST[“a_form_contact_us_preferred_method_of_contact_1”] == “Phone” && $_POST[“a_form_contact_us_phone”] == “”) {
$GLOBALS[“aforms_additional_validations_for_4”][“a_form_contact_us_phone”] = “required”;
if (isset($_POST[“a_form_contact_us_preferred_method_of_contact_0”]) && isset($_POST[“a_form_contact_us_email”]) && $_POST[“a_form_contact_us_preferred_method_of_contact_0”] == “EMail” && $_POST[“a_form_contact_us_email”] == “”) {
$GLOBALS[“aforms_additional_validations_for_4”][“a_form_contact_us_email”] = “required”;


1) Install WordPress 4.4.1 or higher

2) Download the latest from:

3) Login to WordPress admin, click on Plugins / Add New / Upload, then upload the zip file you just downloaded.

4) Activate the plugin.

Contributors & Developers

“A Forms” is open source software. The following people have contributed to this plugin.


Translate “A Forms” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Improved code suggested by WordPress.


  • You can now block sending an email to admin based on email submitted in form.


  • Small bug that only I saw, wrote unnecessary error to wp_admin log.


  • Added in summary of how many emails were sent within the previous month.


  • Fixed phone number behaviour.


  • UI on page/post Add A Form TinyMCE control now works in WordPress 3.9 and higher.


  • Add Google Event to the form submission. Assumes that you have installed Google Analytics on your site. If you haven’t obviously don’t fill in the Google Analytic Event fields.


  • Fixed broken reference to wordpress library file.


  • Fixed bug when resorting form.


  • Added ability to validate against phone, mobile and postcode. Only allows numbers to be entered for phone, mobile and postcode.


  • Added in advanced validation ability, please see description above. Also checkout /a-forms/validations/a_form_validation.php and look at method is_valid($atts);


  • Removed Tom M8te dependency.


  • Security hole found in Tom m8te and so needed to make change so that A Forms can work with Tom M8te 1.6.0.


  • Noticed that latest version of php does not support dynamic mapping of controllers and actions, so I had to redo the route mapping for admin.


  • Small admin css updates.


  • Better compatible with IE.


  • Display * on front end view if form item is required.


  • Ability to use placeholders in the forms. Fixed up stylesheet reset button. Ability to choose if you want sections per page or in one page.


  • Added logo, found that some clients have issues with routing to correct admin page, so fixed that. Strange cos I didn’t see the issue on mine.


  • Last fix didn’t work so well with ajax on so I provided a message before and let you know you couldn’t track referrer with ajax on. This release fixes that bug, so now you can use ajax and track referrer url.


  • Fixed up referrer url in tracking.


  • Still noticed IE issues, so not using jQuery form library like in 1.5.4. Made my own and seems to work better. Also prevent double click on form or resubmitting submitted form for both ajax and non ajax.


  • Increased compatibility for Ajax across all IE versions. 1.5.3 seemed to be only good for IE10 for ajax.


  • Able to add form to widget area.


  • Ajusted securimage captcha. Updated captcha container class if it errors.


  • Updated tracking code. Allows you to upload images with new VC code. Allows you to use AJAX.


  • Refactored the code to make it more efficient and easier to manage. Should make it easier to make changes in the future.


  • Fixed issue with adding fields to the form. In previous versions it was slower, options were forgotten or given to something else, when the fields were rearranged. Now even if you rearrange the fields, it can work out those past problems.


  • Fixed yet another issue with critical cross-site scripting. I’ve forced SiteLock to check and check, and I think its finally fixed.


  • Fixed another issue with critical cross-site scripting.


  • Fixed up critical cross-site scripting vulnerability.


  • Able to use Math generated captcha as well as Securimage Captcha.


  • Able to now use algorithms such as SSL or TLS security algorithms when sending out emails.


  • Found bugs where you have two or more A Forms on the same page and it didn’t know which validation belonged to which form, this has now been fixed.


  • Found that if you put quotes in the email, it would display them incorrectly. There were major issues with displaying the form information on the site, so I changed how to present information on the tracking screen.


  • Changed how the dependency plugin code works. Fixed the from email address not showing the correct email.


  • Added social share links to the bottom of all admin pages.


  • Fixed a div issue and added ability to reset stylesheet.


  • Fixed up css issues. Added search facility with tracking.


  • When you activate, don’t print useless warning error messages to the log.


  • Improved code with styles. Updated admin GUI. Updated tracking page.


  • Fixed section issue.


  • Initial Commit