{"id":24360,"date":"2013-07-25T16:57:41","date_gmt":"2013-07-25T16:57:41","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/contact-forms\/"},"modified":"2026-05-25T14:50:52","modified_gmt":"2026-05-25T14:50:52","slug":"contact-forms","status":"publish","type":"plugin","link":"https:\/\/fr.wordpress.org\/plugins\/contact-forms\/","author":12579273,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.2.4","stable_tag":"2.2.4","tested":"7.0","requires":"3.5","requires_php":"7.4","requires_plugins":null,"header_name":"Contact Forms by Cimatti","header_author":"Cimatti","header_description":"","assets_banners_color":"f7f7f7","last_updated":"2026-05-25 14:50:52","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.cimatti.it\/en\/wordpress-plugins\/contact-forms\/","header_author_uri":"https:\/\/www.cimatti.it","rating":4.4,"author_block_rating":0,"active_installs":700,"downloads":81883,"num_ratings":16,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"cimatti","date":"2013-07-25 17:06:35"},"1.1":{"tag":"1.1","author":"cimatti","date":"2013-08-20 19:38:44"},"1.2":{"tag":"1.2","author":"cimatti","date":"2013-10-31 19:21:06"},"1.2.1":{"tag":"1.2.1","author":"cimatti","date":"2013-11-13 09:52:16"},"1.3":{"tag":"1.3","author":"cimatti","date":"2014-01-09 14:50:26"},"1.3.1":{"tag":"1.3.1","author":"cimatti","date":"2014-01-24 18:28:31"},"1.3.2":{"tag":"1.3.2","author":"cimatti","date":"2014-02-01 04:20:16"},"1.3.3":{"tag":"1.3.3","author":"cimatti","date":"2014-04-10 12:34:36"},"1.3.4":{"tag":"1.3.4","author":"cimatti","date":"2015-02-06 21:48:13"},"1.3.5":{"tag":"1.3.5","author":"cimatti","date":"2015-10-06 13:19:03"},"1.3.6":{"tag":"1.3.6","author":"cimatti","date":"2015-10-23 19:24:25"},"1.3.7":{"tag":"1.3.7","author":"cimatti","date":"2015-12-10 23:16:32"},"1.3.8":{"tag":"1.3.8","author":"cimatti","date":"2015-12-17 13:19:32"},"1.3.9":{"tag":"1.3.9","author":"cimatti","date":"2015-12-24 20:47:12"},"1.4.0":{"tag":"1.4.0","author":"cimatti","date":"2016-03-15 21:53:59"},"1.4.1":{"tag":"1.4.1","author":"cimatti","date":"2016-03-16 20:11:10"},"1.4.10":{"tag":"1.4.10","author":"cimatti","date":"2020-07-08 20:06:52"},"1.4.11":{"tag":"1.4.11","author":"cimatti","date":"2020-11-04 11:23:28"},"1.4.12":{"tag":"1.4.12","author":"cimatti","date":"2023-05-29 12:37:20"},"1.4.13":{"tag":"1.4.13","author":"cimatti","date":"2023-05-29 12:37:20"},"1.4.14":{"tag":"1.4.14","author":"cimatti","date":"2023-05-29 12:37:20"},"1.4.2":{"tag":"1.4.2","author":"cimatti","date":"2016-03-29 15:13:42"},"1.4.3":{"tag":"1.4.3","author":"cimatti","date":"2016-03-29 18:43:06"},"1.4.4":{"tag":"1.4.4","author":"cimatti","date":"2016-04-21 15:15:16"},"1.4.5":{"tag":"1.4.5","author":"cimatti","date":"2017-01-18 11:52:47"},"1.4.6":{"tag":"1.4.6","author":"cimatti","date":"2017-02-14 11:36:47"},"1.4.7":{"tag":"1.4.7","author":"cimatti","date":"2017-06-13 14:29:54"},"1.4.8":{"tag":"1.4.8","author":"cimatti","date":"2019-03-11 14:27:11"},"1.4.9":{"tag":"1.4.9","author":"cimatti","date":"2019-07-24 15:16:08"},"1.5.1":{"tag":"1.5.1","author":"cimatti","date":"2023-05-29 12:37:20"},"1.5.10":{"tag":"1.5.10","author":"cimatti","date":"2023-07-26 06:59:35"},"1.5.2":{"tag":"1.5.2","author":"cimatti","date":"2023-05-29 12:37:20"},"1.5.3":{"tag":"1.5.3","author":"cimatti","date":"2023-05-29 12:37:20"},"1.5.4":{"tag":"1.5.4","author":"cimatti","date":"2023-05-29 12:37:20"},"1.5.5":{"tag":"1.5.5","author":"cimatti","date":"2023-05-29 12:37:20"},"1.5.6":{"tag":"1.5.6","author":"cimatti","date":"2023-05-29 12:37:20"},"1.5.7":{"tag":"1.5.7","author":"cimatti","date":"2023-05-29 12:37:20"},"1.5.8":{"tag":"1.5.8","author":"cimatti","date":"2023-06-12 07:53:19"},"1.5.9":{"tag":"1.5.9","author":"cimatti","date":"2023-07-26 06:54:15"},"1.6.0":{"tag":"1.6.0","author":"cimatti","date":"2023-08-03 11:06:27"},"1.6.1":{"tag":"1.6.1","author":"cimatti","date":"2023-11-03 16:28:07"},"1.7.0":{"tag":"1.7.0","author":"cimatti","date":"2023-12-14 08:31:49"},"1.8.0":{"tag":"1.8.0","author":"cimatti","date":"2023-12-19 13:31:45"},"1.9.0":{"tag":"1.9.0","author":"cimatti","date":"2024-04-22 13:12:00"},"1.9.1":{"tag":"1.9.1","author":"cimatti","date":"2024-04-30 12:16:17"},"1.9.2":{"tag":"1.9.2","author":"cimatti","date":"2024-04-30 14:26:56"},"1.9.3":{"tag":"1.9.3","author":"cimatti","date":"2024-11-25 17:15:35"},"1.9.4":{"tag":"1.9.4","author":"cimatti","date":"2025-01-30 16:10:24"},"1.9.5":{"tag":"1.9.5","author":"cimatti","date":"2025-01-30 16:10:24"},"1.9.6":{"tag":"1.9.6","author":"cimatti","date":"2025-05-13 06:56:06"},"1.9.7":{"tag":"1.9.7","author":"cimatti","date":"2025-05-13 06:56:06"},"2.0.0":{"tag":"2.0.0","author":"cimatti","date":"2026-04-08 09:49:57"},"2.1.0":{"tag":"2.1.0","author":"cimatti","date":"2026-04-21 16:05:25"},"2.1.1":{"tag":"2.1.1","author":"cimatti","date":"2026-04-22 08:07:22"},"2.1.2":{"tag":"2.1.2","author":"cimatti","date":"2026-05-07 08:32:01"},"2.2.0":{"tag":"2.2.0","author":"cimatti","date":"2026-05-18 15:14:51"},"2.2.4":{"tag":"2.2.4","author":"cimatti","date":"2026-05-25 14:50:52"}},"upgrade_notice":{"2.0.0":"<p>Major rewrite: accessibility (WCAG 2.2 AA), GDPR tools, new layouts, spam protection, and modern admin UI. CSS changes may affect custom theme styling -- use Theme Helper to review. All existing forms continue to work.<\/p>"},"ratings":{"1":2,"2":0,"3":0,"4":2,"5":12},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3006878,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3006878,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":2947119,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":2947115,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":2947115,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3547794,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/contact-us\\\/\",\"login\":true,\"preferredVersions\":{\"php\":\"8.0\",\"wp\":\"latest\"},\"steps\":[{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"contact-forms\"},\"options\":{\"activate\":true}},{\"step\":\"setSiteOptions\",\"options\":{\"permalink_structure\":\"\\\/%postname%\\\/\",\"blogname\":\"Contact Forms Demo\"}},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; $avail_fields = get_option('accua_forms_avail_fields', array()); $avail_fields['start_date'] = array('version' => 2, 'id' => 'start_date', 'name' => 'Preferred Start Date', 'type' => 'date', 'description' => '', 'default_value' => '', 'default_date_value' => '', 'allowed_values' => '', 'allowed_extensions' => '', 'min_date' => '', 'max_date' => ''); $avail_fields['resume'] = array('version' => 2, 'id' => 'resume', 'name' => 'Resume \\\/ CV', 'type' => 'file', 'description' => '', 'default_value' => '', 'default_date_value' => '', 'allowed_values' => '', 'allowed_extensions' => 'pdf,doc,docx', 'min_date' => '', 'max_date' => ''); $avail_fields['department'] = array('version' => 2, 'id' => 'department', 'name' => 'Department', 'type' => 'select', 'description' => '', 'default_value' => '', 'default_date_value' => '', 'allowed_values' => \\\"Sales\\\\r\\\\nMarketing\\\\r\\\\nEngineering\\\\r\\\\nSupport\\\\r\\\\nHuman Resources\\\\r\\\\nOther\\\", 'allowed_extensions' => '', 'min_date' => '', 'max_date' => ''); $avail_fields['contact_reason'] = array('version' => 2, 'id' => 'contact_reason', 'name' => 'Reason for Contact', 'type' => 'radio', 'description' => '', 'default_value' => '', 'default_date_value' => '', 'allowed_values' => \\\"General Inquiry\\\\r\\\\nSupport Request\\\\r\\\\nPartnership\\\\r\\\\nFeedback\\\", 'allowed_extensions' => '', 'min_date' => '', 'max_date' => ''); $avail_fields['sessions'] = array('version' => 2, 'id' => 'sessions', 'name' => 'Sessions of Interest', 'type' => 'multiselect', 'description' => '', 'default_value' => '', 'default_date_value' => '', 'allowed_values' => \\\"Keynote\\\\r\\\\nWorkshop A: Frontend Dev\\\\r\\\\nWorkshop B: Backend Dev\\\\r\\\\nNetworking Lunch\\\\r\\\\nPanel Discussion\\\", 'allowed_extensions' => '', 'min_date' => '', 'max_date' => ''); $avail_fields['dietary'] = array('version' => 2, 'id' => 'dietary', 'name' => 'Dietary Requirements', 'type' => 'multicheckbox', 'description' => '', 'default_value' => '', 'default_date_value' => '', 'allowed_values' => \\\"Vegetarian\\\\r\\\\nVegan\\\\r\\\\nGluten-free\\\\r\\\\nHalal\\\\r\\\\nNo restrictions\\\", 'allowed_extensions' => '', 'min_date' => '', 'max_date' => ''); $avail_fields['agree_terms'] = array('version' => 2, 'id' => 'agree_terms', 'name' => 'I agree to the Terms and Conditions', 'type' => 'checkbox', 'description' => '', 'default_value' => '', 'default_date_value' => '', 'allowed_values' => '', 'allowed_extensions' => '', 'min_date' => '', 'max_date' => ''); $avail_fields['related_article'] = array('version' => 2, 'id' => 'related_article', 'name' => 'Related Article', 'type' => 'post-select', 'description' => '', 'default_value' => '', 'default_date_value' => '', 'allowed_values' => '', 'allowed_extensions' => '', 'min_date' => '', 'max_date' => ''); $avail_fields['related_pages'] = array('version' => 2, 'id' => 'related_pages', 'name' => 'Related Pages', 'type' => 'post-multicheckbox', 'description' => '', 'default_value' => '', 'default_date_value' => '', 'allowed_values' => '', 'allowed_extensions' => '', 'min_date' => '', 'max_date' => ''); update_option('accua_forms_avail_fields', $avail_fields); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; wp_insert_post(array('post_title' => 'Getting Started with Our Platform', 'post_content' => '<!-- wp:paragraph --><p>Welcome to our platform! This guide covers the basics.<\\\/p><!-- \\\/wp:paragraph -->', 'post_status' => 'publish', 'post_type' => 'post')); wp_insert_post(array('post_title' => 'Tips for Better Productivity', 'post_content' => '<!-- wp:paragraph --><p>Here are our top tips for getting the most out of your workflow.<\\\/p><!-- \\\/wp:paragraph -->', 'post_status' => 'publish', 'post_type' => 'post')); wp_insert_post(array('post_title' => 'Frequently Asked Questions', 'post_content' => '<!-- wp:paragraph --><p>Answers to the questions we hear most often.<\\\/p><!-- \\\/wp:paragraph -->', 'post_status' => 'publish', 'post_type' => 'post')); wp_insert_post(array('post_title' => 'Company News and Updates', 'post_content' => '<!-- wp:paragraph --><p>The latest news from our team.<\\\/p><!-- \\\/wp:paragraph -->', 'post_status' => 'publish', 'post_type' => 'post')); wp_insert_post(array('post_title' => 'Feature Spotlight: Contact Forms', 'post_content' => '<!-- wp:paragraph --><p>A deep dive into our contact forms plugin features.<\\\/p><!-- \\\/wp:paragraph -->', 'post_status' => 'publish', 'post_type' => 'post')); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; $forms = get_option('accua_forms_saved_forms', array()); if (!is_array($forms)) $forms = array(); $lastid = (int) get_option('accua_forms_lastid', 0); $admin_email = get_option('admin_email'); $lastid++; $fid_toplabel = $lastid; $forms[$lastid] = array('use_ajax' => true, 'title' => 'Contact Us (Top Labels)', 'layout' => 'toplabel', 'success_message' => '<div><h2>Thank you {first_name} {last_name},<\\\/h2><p>We have received your message and will get back to you shortly.<\\\/p><\\\/div>', 'error_message' => '<div><h2>Something went wrong.<\\\/h2><p>Please try again or contact us directly.<\\\/p><\\\/div>', 'emails_from_name' => '', 'emails_from' => '', 'admin_emails_to' => $admin_email, 'emails_bcc' => '', 'admin_emails_subject' => 'New contact form submission', 'admin_emails_message' => '{__submitted_html}', 'confirmation_emails_subject' => 'We received your message', 'confirmation_emails_message' => '<div><h2>Thank you {first_name},<\\\/h2><p>We will get back to you soon.<\\\/p><\\\/div>', 'fields' => array('first_name' => array('version' => 2, 'istance_id' => 'first_name', 'widget_number' => '', 'ref' => 'first_name', 'required' => true, 'css_class' => '', 'css_id' => ''), 'last_name' => array('version' => 2, 'istance_id' => 'last_name', 'widget_number' => '', 'ref' => 'last_name', 'required' => true, 'css_class' => '', 'css_id' => ''), 'email' => array('version' => 2, 'istance_id' => 'email', 'widget_number' => '', 'ref' => 'email', 'required' => true, 'css_class' => '', 'css_id' => ''), 'telephone' => array('version' => 2, 'istance_id' => 'telephone', 'widget_number' => '', 'ref' => 'telephone', 'required' => false, 'css_class' => '', 'css_id' => ''), 'contact_reason' => array('version' => 2, 'istance_id' => 'contact_reason', 'widget_number' => '', 'ref' => 'contact_reason', 'required' => true, 'css_class' => '', 'css_id' => ''), 'message' => array('version' => 2, 'istance_id' => 'message', 'widget_number' => '', 'ref' => 'message', 'required' => true, 'css_class' => '', 'css_id' => ''))); update_option('accua_forms_saved_forms', $forms); update_option('accua_forms_lastid', $lastid); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; $forms = get_option('accua_forms_saved_forms', array()); $lastid = (int) get_option('accua_forms_lastid', 0); $admin_email = get_option('admin_email'); $lastid++; $fid_sidebyside = $lastid; $forms[$lastid] = array('use_ajax' => true, 'title' => 'Job Application (Side by Side Labels)', 'layout' => 'sidebyside', 'success_message' => '<div><h2>Application Received<\\\/h2><p>Thank you {first_name}! We will review your application and get back to you within 5 business days.<\\\/p><\\\/div>', 'error_message' => '<div><h2>Submission Error<\\\/h2><p>Please try again.<\\\/p><\\\/div>', 'emails_from_name' => '', 'emails_from' => '', 'admin_emails_to' => $admin_email, 'emails_bcc' => '', 'admin_emails_subject' => 'New job application: {first_name} {last_name}', 'admin_emails_message' => '{__submitted_html}', 'confirmation_emails_subject' => 'Application received', 'confirmation_emails_message' => '<div><p>Dear {first_name}, your application has been received.<\\\/p><\\\/div>', 'fields' => array('first_name' => array('version' => 2, 'istance_id' => 'first_name', 'widget_number' => '', 'ref' => 'first_name', 'required' => true, 'css_class' => '', 'css_id' => ''), 'last_name' => array('version' => 2, 'istance_id' => 'last_name', 'widget_number' => '', 'ref' => 'last_name', 'required' => true, 'css_class' => '', 'css_id' => ''), 'email' => array('version' => 2, 'istance_id' => 'email', 'widget_number' => '', 'ref' => 'email', 'required' => true, 'css_class' => '', 'css_id' => ''), 'telephone' => array('version' => 2, 'istance_id' => 'telephone', 'widget_number' => '', 'ref' => 'telephone', 'required' => true, 'css_class' => '', 'css_id' => ''), 'department' => array('version' => 2, 'istance_id' => 'department', 'widget_number' => '', 'ref' => 'department', 'required' => true, 'css_class' => '', 'css_id' => ''), 'country' => array('version' => 2, 'istance_id' => 'country', 'widget_number' => '', 'ref' => 'country', 'required' => true, 'css_class' => '', 'css_id' => ''), 'start_date' => array('version' => 2, 'istance_id' => 'start_date', 'widget_number' => '', 'ref' => 'start_date', 'required' => false, 'css_class' => '', 'css_id' => ''), 'resume' => array('version' => 2, 'istance_id' => 'resume', 'widget_number' => '', 'ref' => 'resume', 'required' => true, 'css_class' => '', 'css_id' => ''), 'message' => array('version' => 2, 'istance_id' => 'message', 'widget_number' => '', 'ref' => 'message', 'required' => false, 'css_class' => '', 'css_id' => ''))); update_option('accua_forms_saved_forms', $forms); update_option('accua_forms_lastid', $lastid); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; $forms = get_option('accua_forms_saved_forms', array()); $lastid = (int) get_option('accua_forms_lastid', 0); $admin_email = get_option('admin_email'); $lastid++; $fid_inline = $lastid; $forms[$lastid] = array('use_ajax' => true, 'title' => 'Quick Feedback (Inline Labels)', 'layout' => 'inlinelabel', 'success_message' => '<div><h2>Thanks for your feedback!<\\\/h2><p>We appreciate you taking the time to write to us.<\\\/p><\\\/div>', 'error_message' => '<div><h2>Error<\\\/h2><p>Please try again.<\\\/p><\\\/div>', 'emails_from_name' => '', 'emails_from' => '', 'admin_emails_to' => $admin_email, 'emails_bcc' => '', 'admin_emails_subject' => 'New feedback received', 'admin_emails_message' => '{__submitted_html}', 'confirmation_emails_subject' => '', 'confirmation_emails_message' => '', 'fields' => array('first_name' => array('version' => 2, 'istance_id' => 'first_name', 'widget_number' => '', 'ref' => 'first_name', 'required' => true, 'css_class' => '', 'css_id' => ''), 'email' => array('version' => 2, 'istance_id' => 'email', 'widget_number' => '', 'ref' => 'email', 'required' => true, 'css_class' => '', 'css_id' => ''), 'department' => array('version' => 2, 'istance_id' => 'department', 'widget_number' => '', 'ref' => 'department', 'required' => false, 'css_class' => '', 'css_id' => ''), 'message' => array('version' => 2, 'istance_id' => 'message', 'widget_number' => '', 'ref' => 'message', 'required' => true, 'css_class' => '', 'css_id' => ''))); update_option('accua_forms_saved_forms', $forms); update_option('accua_forms_lastid', $lastid); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; $forms = get_option('accua_forms_saved_forms', array()); $lastid = (int) get_option('accua_forms_lastid', 0); $admin_email = get_option('admin_email'); $lastid++; $fid_event = $lastid; $forms[$lastid] = array('use_ajax' => true, 'title' => 'Event Registration (Fieldsets + Checkboxes)', 'layout' => 'toplabel', 'success_message' => '<div><h2>Registration Complete!<\\\/h2><p>Thank you {first_name}! You are now registered for the event. Check your email for confirmation details.<\\\/p><\\\/div>', 'error_message' => '<div><h2>Registration Failed<\\\/h2><p>Please try again.<\\\/p><\\\/div>', 'emails_from_name' => '', 'emails_from' => '', 'admin_emails_to' => $admin_email, 'emails_bcc' => '', 'admin_emails_subject' => 'New event registration: {first_name} {last_name}', 'admin_emails_message' => '{__submitted_html}', 'confirmation_emails_subject' => 'Event registration confirmed', 'confirmation_emails_message' => '<div><p>Dear {first_name}, your registration has been confirmed.<\\\/p><\\\/div>', 'fields' => array('__fieldset-begin-1' => array('version' => 2, 'istance_id' => '__fieldset-begin-1', 'widget_number' => 1, 'ref' => '__fieldset-begin', 'label' => 'Personal Information', 'required' => false, 'css_class' => '', 'css_id' => ''), 'first_name' => array('version' => 2, 'istance_id' => 'first_name', 'widget_number' => '', 'ref' => 'first_name', 'required' => true, 'css_class' => '', 'css_id' => ''), 'last_name' => array('version' => 2, 'istance_id' => 'last_name', 'widget_number' => '', 'ref' => 'last_name', 'required' => true, 'css_class' => '', 'css_id' => ''), 'email' => array('version' => 2, 'istance_id' => 'email', 'widget_number' => '', 'ref' => 'email', 'required' => true, 'css_class' => '', 'css_id' => ''), 'telephone' => array('version' => 2, 'istance_id' => 'telephone', 'widget_number' => '', 'ref' => 'telephone', 'required' => false, 'css_class' => '', 'css_id' => ''), '__fieldset-end-1' => array('version' => 2, 'istance_id' => '__fieldset-end-1', 'widget_number' => 1, 'ref' => '__fieldset-end', 'required' => false, 'css_class' => '', 'css_id' => ''), '__fieldset-begin-2' => array('version' => 2, 'istance_id' => '__fieldset-begin-2', 'widget_number' => 2, 'ref' => '__fieldset-begin', 'label' => 'Event Preferences', 'required' => false, 'css_class' => '', 'css_id' => ''), 'sessions' => array('version' => 2, 'istance_id' => 'sessions', 'widget_number' => '', 'ref' => 'sessions', 'required' => true, 'css_class' => '', 'css_id' => ''), 'dietary' => array('version' => 2, 'istance_id' => 'dietary', 'widget_number' => '', 'ref' => 'dietary', 'required' => false, 'css_class' => '', 'css_id' => ''), '__fieldset-end-2' => array('version' => 2, 'istance_id' => '__fieldset-end-2', 'widget_number' => 2, 'ref' => '__fieldset-end', 'required' => false, 'css_class' => '', 'css_id' => ''), 'agree_terms' => array('version' => 2, 'istance_id' => 'agree_terms', 'widget_number' => '', 'ref' => 'agree_terms', 'required' => true, 'css_class' => '', 'css_id' => ''), 'message' => array('version' => 2, 'istance_id' => 'message', 'widget_number' => '', 'ref' => 'message', 'required' => false, 'css_class' => '', 'css_id' => ''))); update_option('accua_forms_saved_forms', $forms); update_option('accua_forms_lastid', $lastid); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; $forms = get_option('accua_forms_saved_forms', array()); $lastid = (int) get_option('accua_forms_lastid', 0); $admin_email = get_option('admin_email'); $lastid++; $fid_content = $lastid; $forms[$lastid] = array('use_ajax' => true, 'title' => 'Content Feedback (Post Select + HTML)', 'layout' => 'toplabel', 'success_message' => '<div><h2>Feedback Received<\\\/h2><p>Thank you for your feedback on our content!<\\\/p><\\\/div>', 'error_message' => '<div><h2>Error<\\\/h2><p>Please try again.<\\\/p><\\\/div>', 'emails_from_name' => '', 'emails_from' => '', 'admin_emails_to' => $admin_email, 'emails_bcc' => '', 'admin_emails_subject' => 'Content feedback received', 'admin_emails_message' => '{__submitted_html}', 'confirmation_emails_subject' => '', 'confirmation_emails_message' => '', 'fields' => array('__html-1' => array('version' => 2, 'istance_id' => '__html-1', 'widget_number' => 1, 'ref' => '__html', 'default_value' => '<div style=\\\"background:#f0f7ff;border:1px solid #c0d8f0;border-radius:4px;padding:12px 16px;margin-bottom:1em;\\\"><strong>Help us improve!<\\\/strong> Select the article you are providing feedback about, then tell us what you think.<\\\/div>', 'required' => false, 'css_class' => '', 'css_id' => ''), 'related_article' => array('version' => 2, 'istance_id' => 'related_article', 'widget_number' => '', 'ref' => 'related_article', 'required' => true, 'post_type' => 'post', 'css_class' => '', 'css_id' => ''), 'related_pages' => array('version' => 2, 'istance_id' => 'related_pages', 'widget_number' => '', 'ref' => 'related_pages', 'required' => false, 'post_type' => 'page', 'css_class' => '', 'css_id' => ''), 'contact_reason' => array('version' => 2, 'istance_id' => 'contact_reason', 'widget_number' => '', 'ref' => 'contact_reason', 'required' => true, 'css_class' => '', 'css_id' => ''), 'email' => array('version' => 2, 'istance_id' => 'email', 'widget_number' => '', 'ref' => 'email', 'required' => true, 'css_class' => '', 'css_id' => ''), 'message' => array('version' => 2, 'istance_id' => 'message', 'widget_number' => '', 'ref' => 'message', 'required' => true, 'css_class' => '', 'css_id' => ''))); update_option('accua_forms_saved_forms', $forms); update_option('accua_forms_lastid', $lastid); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; $forms = get_option('accua_forms_saved_forms', array()); $fids = array_keys($forms); $fid_toplabel = $fids[0]; $fid_sidebyside = $fids[1]; $fid_inline = $fids[2]; $fid_event = $fids[3]; $fid_content = $fids[4]; $notice = '<!-- wp:paragraph --><p><em>Note: This is a live demo running in WordPress Playground. Form submissions are saved to the database but email notifications will not be delivered.<\\\/em><\\\/p><!-- \\\/wp:paragraph -->'; wp_insert_post(array('post_title' => 'Contact Us', 'post_name' => 'contact-us', 'post_content' => '<!-- wp:heading --><h2>Top Labels Layout<\\\/h2><!-- \\\/wp:heading --><!-- wp:paragraph --><p>Labels are positioned above each field. This is the most common and mobile-friendly layout.<\\\/p><!-- \\\/wp:paragraph -->' . $notice . '<!-- wp:shortcode -->[accua-form fid=\\\"' . $fid_toplabel . '\\\"]<!-- \\\/wp:shortcode -->', 'post_status' => 'publish', 'post_type' => 'page')); wp_insert_post(array('post_title' => 'Job Application', 'post_name' => 'job-application', 'post_content' => '<!-- wp:heading --><h2>Side by Side Labels Layout<\\\/h2><!-- \\\/wp:heading --><!-- wp:paragraph --><p>Labels sit beside each field, ideal for wider screens and longer forms. Includes date picker, file upload, select dropdown, and telephone fields.<\\\/p><!-- \\\/wp:paragraph -->' . $notice . '<!-- wp:shortcode -->[accua-form fid=\\\"' . $fid_sidebyside . '\\\"]<!-- \\\/wp:shortcode -->', 'post_status' => 'publish', 'post_type' => 'page')); wp_insert_post(array('post_title' => 'Quick Feedback', 'post_name' => 'quick-feedback', 'post_content' => '<!-- wp:heading --><h2>Inline Labels Layout<\\\/h2><!-- \\\/wp:heading --><!-- wp:paragraph --><p>Labels appear as placeholders inside the fields for a compact, modern look.<\\\/p><!-- \\\/wp:paragraph -->' . $notice . '<!-- wp:shortcode -->[accua-form fid=\\\"' . $fid_inline . '\\\"]<!-- \\\/wp:shortcode -->', 'post_status' => 'publish', 'post_type' => 'page')); wp_insert_post(array('post_title' => 'Event Registration', 'post_name' => 'event-registration', 'post_content' => '<!-- wp:heading --><h2>Fieldset Groups, Checkboxes &amp; Multi-Select<\\\/h2><!-- \\\/wp:heading --><!-- wp:paragraph --><p>Demonstrates grouped fields inside fieldsets, single checkbox (terms), multi-checkbox (dietary), and multi-select (sessions).<\\\/p><!-- \\\/wp:paragraph -->' . $notice . '<!-- wp:shortcode -->[accua-form fid=\\\"' . $fid_event . '\\\"]<!-- \\\/wp:shortcode -->', 'post_status' => 'publish', 'post_type' => 'page')); wp_insert_post(array('post_title' => 'Content Feedback', 'post_name' => 'content-feedback', 'post_content' => '<!-- wp:heading --><h2>Post Select, HTML Block &amp; Hidden Field<\\\/h2><!-- \\\/wp:heading --><!-- wp:paragraph --><p>Demonstrates post-select (dropdown populated from posts), post-multicheckbox (checkboxes from pages), custom HTML blocks, and hidden tracking fields.<\\\/p><!-- \\\/wp:paragraph -->' . $notice . '<!-- wp:shortcode -->[accua-form fid=\\\"' . $fid_content . '\\\"]<!-- \\\/wp:shortcode -->', 'post_status' => 'publish', 'post_type' => 'page')); ?>\"},{\"step\":\"runPHP\",\"code\":\"<?php require_once '\\\/wordpress\\\/wp-load.php'; global $wpdb; $forms = get_option('accua_forms_saved_forms', array()); $fids = array_keys($forms); $table_sub = $wpdb->prefix . 'accua_forms_submissions'; $table_val = $wpdb->prefix . 'accua_forms_submissions_values'; $names = array(array('Alice','Johnson','alice.johnson@example.com'),array('Bob','Smith','bob.smith@example.com'),array('Carol','Williams','carol.w@example.com'),array('David','Brown','david.brown@example.com'),array('Eva','Martinez','eva.m@example.com'),array('Frank','Garcia','frank.g@example.com'),array('Grace','Lee','grace.lee@example.com'),array('Henry','Wilson','henry.w@example.com'),array('Iris','Taylor','iris.t@example.com'),array('Jack','Anderson','jack.a@example.com'),array('Karen','Thomas','karen.t@example.com'),array('Leo','Moore','leo.moore@example.com')); $messages = array('I would like to learn more about your services.','Can you help me with a project?','Great plugin, just wanted to say thanks!','I have a question about pricing.','Please contact me regarding a partnership.','Interested in your enterprise plan.','How do I integrate with my existing site?','Looking forward to hearing from you.'); $reasons = array('General Inquiry','Support Request','Partnership','Feedback'); $now = time(); for ($i = 0; $i < 12; $i++) { $n = $names[$i]; $days_ago = rand(1, 30); $created = gmdate('Y-m-d H:i:s', $now - ($days_ago * 86400) - rand(60,3600)); $submitted = gmdate('Y-m-d H:i:s', $now - ($days_ago * 86400)); $fid = $fids[$i % 3]; $uri = $i % 3 === 0 ? '\\\/contact-us\\\/' : ($i % 3 === 1 ? '\\\/job-application\\\/' : '\\\/quick-feedback\\\/'); $stats_json = json_encode(array('user_agent' => 'Mozilla\\\/5.0 (Windows NT 10.0; Win64; x64)', 'platform' => 'desktop', 'tentatives' => 1, 'submit_method' => 'ajax')); $wpdb->insert($table_sub, array('afs_form_id' => (string)$fid, 'afs_post_id' => 0, 'afs_ip' => '192.168.1.' . rand(10,250), 'afs_uri' => $uri, 'afs_referrer' => '', 'afs_lang' => 'en_US', 'afs_created' => $created, 'afs_submitted' => $submitted, 'afs_status' => 0, 'afs_stats' => $stats_json, 'afs_lead_status' => $i < 4 ? 1 : 0)); $sid = $wpdb->insert_id; $wpdb->insert($table_val, array('afsv_sub_id' => $sid, 'afsv_field_id' => 'first_name', 'afsv_type' => 'textfield', 'afsv_value' => $n[0])); $wpdb->insert($table_val, array('afsv_sub_id' => $sid, 'afsv_field_id' => 'last_name', 'afsv_type' => 'textfield', 'afsv_value' => $n[1])); $wpdb->insert($table_val, array('afsv_sub_id' => $sid, 'afsv_field_id' => 'email', 'afsv_type' => 'autoreply_email', 'afsv_value' => $n[2])); $wpdb->insert($table_val, array('afsv_sub_id' => $sid, 'afsv_field_id' => 'message', 'afsv_type' => 'textarea', 'afsv_value' => $messages[$i % count($messages)])); if ($i % 3 === 0) { $wpdb->insert($table_val, array('afsv_sub_id' => $sid, 'afsv_field_id' => 'contact_reason', 'afsv_type' => 'radio', 'afsv_value' => $reasons[$i % 4])); } } ?>\"}]}"}},"all_blocks":{"contact-forms\/form-selector":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"contact-forms\/form-selector","title":"Contact Form","category":"widgets","icon":"email-alt","description":"Display a contact form created with Contact Forms by Cimatti.","keywords":["form","contact","email","cimatti"],"textdomain":"contact-forms","attributes":{"formId":{"type":"integer","default":0}},"supports":{"html":false,"multiple":true},"editorScript":"contact-forms-block-editor","render":"file:.\/render.php"}},"tagged_versions":["1.0","1.1","1.2","1.2.1","1.3","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.3.6","1.3.7","1.3.8","1.3.9","1.4.0","1.4.1","1.4.10","1.4.11","1.4.12","1.4.13","1.4.14","1.4.2","1.4.3","1.4.4","1.4.5","1.4.6","1.4.7","1.4.8","1.4.9","1.5.1","1.5.10","1.5.2","1.5.3","1.5.4","1.5.5","1.5.6","1.5.7","1.5.8","1.5.9","1.6.0","1.6.1","1.7.0","1.8.0","1.9.0","1.9.1","1.9.2","1.9.3","1.9.4","1.9.5","1.9.6","1.9.7","2.0.0","2.1.0","2.1.1","2.1.2","2.2.0","2.2.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3501491,"resolution":"1","location":"assets","locale":"","width":1920,"height":1080},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3501491,"resolution":"10","location":"assets","locale":"","width":1693,"height":788},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3501491,"resolution":"11","location":"assets","locale":"","width":1693,"height":788},"screenshot-12.png":{"filename":"screenshot-12.png","revision":3501491,"resolution":"12","location":"assets","locale":"","width":1920,"height":1080},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3501491,"resolution":"2","location":"assets","locale":"","width":1905,"height":1122},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3501491,"resolution":"3","location":"assets","locale":"","width":1905,"height":1255},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3501491,"resolution":"4","location":"assets","locale":"","width":1905,"height":1986},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3501491,"resolution":"5","location":"assets","locale":"","width":1905,"height":1338},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3501491,"resolution":"6","location":"assets","locale":"","width":1905,"height":1370},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3501491,"resolution":"7","location":"assets","locale":"","width":1905,"height":4740},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3501491,"resolution":"8","location":"assets","locale":"","width":1693,"height":788},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3501491,"resolution":"9","location":"assets","locale":"","width":1920,"height":1080}},"screenshots":{"1":"Dashboard. Filter to show statisics from all forms or from individual forms.","2":"Create forms easily with drag and drop.","3":"Messages tab. Set up online success messages and email messages.","4":"Preview tab. and test forms.","5":"Choose styling options in Settings Page or in Preview tab.","6":"Create your own fields for use in all forms.","7":"List and manage forms. Edit, clone, see form submissions report, put in trash, copy shortcode or php code","8":"Use screen options to show only the fields you need. Filter or search, then export.","9":"Settings Page. Set up default options for all forms to avoid repetition."}},"plugin_section":[262246],"plugin_tags":[358,1203,260727,2253,337],"plugin_category":[41,42,59],"plugin_contributors":[80387],"plugin_business_model":[],"class_list":["post-24360","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-contact-form","plugin_tags-email-notifications","plugin_tags-form-api","plugin_tags-form-builder","plugin_tags-lead-generation","plugin_category-communication","plugin_category-contact-forms","plugin_category-utilities-and-tools","plugin_contributors-cimatti","plugin_committers-cimatti"],"banners":{"banner":"https:\/\/ps.w.org\/contact-forms\/assets\/banner-772x250.png?rev=2947115","banner_2x":"https:\/\/ps.w.org\/contact-forms\/assets\/banner-1544x500.png?rev=2947115","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/contact-forms\/assets\/icon.svg?rev=2947119","icon":"https:\/\/ps.w.org\/contact-forms\/assets\/icon.svg?rev=2947119","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/contact-forms\/assets\/screenshot-1.png?rev=3501491","caption":"Dashboard. Filter to show statisics from all forms or from individual forms."},{"src":"https:\/\/ps.w.org\/contact-forms\/assets\/screenshot-2.png?rev=3501491","caption":"Create forms easily with drag and drop."},{"src":"https:\/\/ps.w.org\/contact-forms\/assets\/screenshot-3.png?rev=3501491","caption":"Messages tab. Set up online success messages and email messages."},{"src":"https:\/\/ps.w.org\/contact-forms\/assets\/screenshot-4.png?rev=3501491","caption":"Preview tab. and test forms."},{"src":"https:\/\/ps.w.org\/contact-forms\/assets\/screenshot-5.png?rev=3501491","caption":"Choose styling options in Settings Page or in Preview tab."},{"src":"https:\/\/ps.w.org\/contact-forms\/assets\/screenshot-6.png?rev=3501491","caption":"Create your own fields for use in all forms."},{"src":"https:\/\/ps.w.org\/contact-forms\/assets\/screenshot-7.png?rev=3501491","caption":"List and manage forms. Edit, clone, see form submissions report, put in trash, copy shortcode or php code"},{"src":"https:\/\/ps.w.org\/contact-forms\/assets\/screenshot-8.png?rev=3501491","caption":"Use screen options to show only the fields you need. Filter or search, then export."},{"src":"https:\/\/ps.w.org\/contact-forms\/assets\/screenshot-9.png?rev=3501491","caption":"Settings Page. Set up default options for all forms to avoid repetition."},{"src":"https:\/\/ps.w.org\/contact-forms\/assets\/screenshot-10.png?rev=3501491","caption":""},{"src":"https:\/\/ps.w.org\/contact-forms\/assets\/screenshot-11.png?rev=3501491","caption":""},{"src":"https:\/\/ps.w.org\/contact-forms\/assets\/screenshot-12.png?rev=3501491","caption":""}],"raw_content":"<!--section=description-->\n<p><a href=\"https:\/\/wordpress.org\/plugins\/contact-forms\/?preview=1\"><strong>Live Preview - Try it in WordPress Playground<\/strong><\/a> (form submission is not available in the live preview)<\/p>\n\n<p>Forms are an essential component of any website. Contact Forms by Cimatti is the culmination of years of experience building and developing business websites of all types. Our plugin focuses on simplicity, power, and <strong>accessibility<\/strong>, helping you capture, store, and classify contacts according to their lead status. It's ideal for single-language and multilingual sites, simple blogs, or complex WordPress-powered Content Management Systems.<\/p>\n\n<h4>Accessibility First<\/h4>\n\n<p>Contact Forms 2.0 is built with accessibility at its core, designed to meet <strong>WCAG 2.2 AA<\/strong> standards and comply with the <strong>European Accessibility Act<\/strong>:<\/p>\n\n<ul>\n<li><strong>Screen Reader Support<\/strong>: All form elements include proper ARIA labels, live regions for dynamic updates, and meaningful error announcements<\/li>\n<li><strong>Keyboard Navigation<\/strong>: Full keyboard accessibility for all interactions, including drag-and-drop file uploads<\/li>\n<li><strong>Clear Error Messages<\/strong>: Validation summary with clickable links to problematic fields, smooth scroll and focus management<\/li>\n<li><strong>Accessible Loading States<\/strong>: Visual and screen reader feedback during form submission<\/li>\n<li><strong>Reduced Motion Support<\/strong>: Respects <code>prefers-reduced-motion<\/code> user preference<\/li>\n<li><strong>High Contrast<\/strong>: Error and success states designed for visibility<\/li>\n<\/ul>\n\n<h4>Select, Configure, and Embed Forms<\/h4>\n\n<p>Choose the fields you require, customize on-screen messages and email responses, preview, test, and effortlessly embed forms into your posts, pages, or custom content types using shortcodes or the built-in TinyMCE button.<\/p>\n\n<h4>Create Forms for Any Purpose<\/h4>\n\n<p>Create as many forms as you need. Design landing pages, contact pages, invitations, job application forms with curriculum upload, customer request forms, spare part requests, and more. Utilize the \"Clone\" feature to avoid \"reinventing the wheel\" when creating new forms.<\/p>\n\n<h4>Ready-to-Use Features<\/h4>\n\n<p>Contact Forms by Cimatti has commonly used fields like First Name, Last Name, Address, Province, Country, Telephone, Email, Captcha, and default success messages and email notifications. Simply create a drag-and-drop form, save it, go to a post or page, and click the orange \"C\" icon in the WYSIWYG editor to insert a contact form into the post or page content.<\/p>\n\n<h4>Easy to Use for Beginners<\/h4>\n\n<p>These features make it effortless for first-time users, but the plugin's fast learning curve will soon entice you to explore its advanced features.<\/p>\n\n<h4>Craft Superior Forms<\/h4>\n\n<p>Don't leave anything to chance; fine-tune the entire form submission process.<\/p>\n\n<h4>Create Reusable Fields<\/h4>\n\n<p>Build custom fields to reuse multiple times, starting with 20 available field types, including Text Field, Text Area, Email, Autoreply Email, Checkbox, Checkbox Group, Radio Buttons, Select, Multiple Select, Hidden Value, File Upload, Captcha, Custom HTML, Password, and more.<\/p>\n\n<h4>Customize Forms to Perfection<\/h4>\n\n<p>Apply visual styles to your forms using options in the \"Appearance\" tab. Select colors, margins, button styles, and more.<\/p>\n\n<h4>Custom Messages for Success<\/h4>\n\n<p>Each form can have its own unique online success message. So, when a form is completed, you can provide access to a file download link, coupon information, or simply a message to confirm that the form was submitted correctly.<\/p>\n\n<h4>Email Notifications for Administrators and Visitors<\/h4>\n\n<p>Send email notifications to administrators, including tracking information like visitor IP, referrer, date and time of form submission, and other user properties (for a full list, see the Beginners' Guide). Send an email notification to the visitor as further confirmation that the form was filled in correctly. All email notifications can be tested in the Preview\/Test Tab before publishing.<\/p>\n\n<h4>Data Collection and Excel Export<\/h4>\n\n<p>All submitted data is securely stored in your WordPress database. Contacts received can be easily categorized into lead status categories and spam and tests can be easily discarded. Add notes on each contact received to keep track.<\/p>\n\n<p>All contact data received can be filtered, searched, and exported to Excel at any time. You can export all the data or just the data you need. The Advanced Excel Export option allows you to export to a file with ready-to-use filtering options.<\/p>\n\n<p>Contact Forms also includes a tracking graph in its Dashboard that displays the performance of all or each of your website forms over time.<\/p>\n\n<h4>Developer-Friendly API<\/h4>\n\n<p>Contact Forms by Cimatti includes an API to assist developers in customizing and adding their own features. WordPress Filters are used to customize forms during generation, to check and validate submitted form values, to execute custom code using sent data, and to add custom tokens for messages. Read the documentation on our site for more information.\nPowerful PHP Form Builder Class\nContact Forms by Cimatti utilizes a PHP form builder class to generate the forms, ensuring robust and efficient form creation and management.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload <code>\/contact-forms\/<\/code> directory to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Create one or more forms using the drag and drop interface.<\/li>\n<li>Edit posts (or pages or custom types) and add the desired form using the \"C\" button in the visual editor (or using the shortcode).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<p>You'll find the <a href=\"http:\/\/www.cimatti.it\/en\/wordpress-plugins\/contact-forms\/faq\/\">FAQ on our website<\/a>.<\/p>\n<dl>\n<dt id=\"where%20do%20i%20report%20security%20bugs%20found%20in%20this%20plugin%3F\"><h3>Where do I report security bugs found in this plugin?<\/h3><\/dt>\n<dd><p>Please report security bugs found in the source code of the\nContact Forms by Cimatti plugin through the <a href=\"https:\/\/patchstack.com\/database\/vdp\/contact-forms\">Patchstack\nVulnerability Disclosure Program<\/a>. The\nPatchstack team will assist you with verification, CVE assignment, and\nnotify the developers of this plugin.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.2.4<\/h4>\n\n<ul>\n<li>Form editor: Appearance tab labels are now clickable (native  elements for accessibility).<\/li>\n<li>Form editor: Section headings use proper h2 elements with consistent styling.<\/li>\n<li>Form editor: Consistent row heights for style options; color pickers hidden when row is unchecked.<\/li>\n<li>Form editor: Labels dropdown no longer overflows its container.<\/li>\n<li>Form editor: Responsive 2-column layout at viewports narrower than 1200px with preview below full-width.<\/li>\n<li>Form editor: Fixed flash of unstyled content (FOUC) on page load.<\/li>\n<li>Form editor: Added note under Labels dropdown explaining automatic responsive stacking at 500px.<\/li>\n<li>i18n: Italian and Spanish translations updated.<\/li>\n<\/ul>\n\n<h4>2.2.3<\/h4>\n\n<ul>\n<li>Form editor: Added \"+\" button on each available field to add it to the form with a single click (appends as last, scrolls into view, opens settings).<\/li>\n<li>Form editor: Hidden the expand caret from available fields list for cleaner UI.<\/li>\n<li>Form editor: Long field names now wrap to multiple lines instead of being truncated. The \"+\" button and expand caret remain vertically centered and always clickable.<\/li>\n<li>i18n: Added Italian translations for new UI strings.<\/li>\n<\/ul>\n\n<h4>2.2.2<\/h4>\n\n<ul>\n<li>Form editor: Added instant search filter in the Available Fields column \u2014 type to quickly find fields by name (substring match).<\/li>\n<\/ul>\n\n<h4>2.2.1<\/h4>\n\n<ul>\n<li>Form editor: Redesigned Fields tab as a stable three-column CSS Grid layout (available fields, drop zone, live preview). The available fields column has its own scrollbar; the other columns use the main browser scroll. Fixes wrapping issues on high-zoom levels, small screens, and forms with many fields or long labels.<\/li>\n<li>Form editor: Each column now has its own heading styled consistently and aligned at the same height.<\/li>\n<li>Form editor: Drop zone title moved outside the dashed border for clearer visual hierarchy.<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Tested up to WordPress 7.0.<\/li>\n<li>Added WordPress Playground blueprint for live preview on wordpress.org - five demo forms covering all field types including fieldsets, checkboxes, multi-select, post-select, and HTML blocks.<\/li>\n<li>Email notifications: Long URLs no longer break print\/PDF layout. Applied table-layout fixed and word-break on URL fields.<\/li>\n<li>Email notifications: Improved vertical spacing between submitted fields with proper cell padding.<\/li>\n<li>Email notifications: Fieldset labels now display correctly instead of raw field IDs.<\/li>\n<li>Email notifications: Fixed malformed font-family quotes in the email body wrapper.<\/li>\n<li>Single submission page: Restructured from 3-column to 2-column (30\/70) layout. Details and Lead Status are now in the left column, submitted fields in the right.<\/li>\n<li>Single submission page: Renamed \"Stats\" postbox to \"Details\".<\/li>\n<li>Single submission page: Long URLs now wrap properly in the submitted fields table.<\/li>\n<li>Submissions list: Added view links (Active, Trash, Lead Status) for quick filtering.<\/li>\n<li>Submissions list: Refactored filter controls into native WP_List_Table extra_tablenav pattern.<\/li>\n<li>Bugfix: Fieldset without a label no longer shows a gap in the border.<\/li>\n<li>Bugfix: Essential Columns button race condition - column settings no longer lost during batch save.<\/li>\n<li>Bugfix: Fields page - legacy-format fields now display correctly with proper name\/slug fallback.<\/li>\n<\/ul>\n\n<h4>2.1.4<\/h4>\n\n<ul>\n<li>Responsive sidebyside layout: labels automatically stack on top when the form container is narrower than 500px, using CSS container queries. Works across all themes regardless of viewport width.<\/li>\n<\/ul>\n\n<h4>2.1.3<\/h4>\n\n<ul>\n<li>Fixed: Post select field value was not saved to database and not included in notification emails. The submission handler now resolves posts directly instead of relying on empty lazy-loaded options.<\/li>\n<\/ul>\n\n<h4>2.1.2<\/h4>\n\n<ul>\n<li>Form editor: Added submission count with link to the submissions list, displayed inline with the page heading.<\/li>\n<li>Form editor: Title input now has proper spacing and sizing matching WordPress core post editor styling.<\/li>\n<li>Form editor: Google Ads and Tokens tabs now use WordPress postbox markup with form-table layout.<\/li>\n<li>Form editor: Added unsaved changes warning (beforeunload prompt) when the form has been modified.<\/li>\n<\/ul>\n\n<h4>2.1.1<\/h4>\n\n<ul>\n<li>Fixed single submission page: restored proper padding and spacing in the Lead status and Notes postbox<\/li>\n<li>Improved layout alignment for Lead status dropdown and help icon<\/li>\n<li>Italian: standardized terminology - \"compilazione\/compilazioni\" for submissions, fixed mixed \"modulo\/moduli\" back to \"form\/forms\", translated all missing strings<\/li>\n<li>Spanish: added ~260 missing translations (Theme Helper, Appearance, Danger Zone, default messages, block editor, GDPR)<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<p>Admin UI modernization with a more coherent design language aligned with native WordPress admin patterns.<\/p>\n\n<ul>\n<li>Flat single-level tab bar for the form editor (Fields, Appearance &amp; General, Messages, Data Retention, Google Ads, Tokens)<\/li>\n<li>Grid-based layout for form field editor and live preview<\/li>\n<li>Tab navigation on the settings page with ARIA-compliant accessible tabs<\/li>\n<li>Native WordPress postbox structure for all settings sections<\/li>\n<li>Messages tab: 2\u00d72 grid layout, accessible radio buttons with fieldset\/label, TinyMCE font selector with 10 email-safe fonts<\/li>\n<li>Default font changed from Lucida Sans to Arial for new forms<\/li>\n<li>Merged dashboard.css into admin.css, removed dead CSS selectors<\/li>\n<li>Bugfix: broken CSS selectors caused by panel ID renaming<\/li>\n<li>Bugfix: Messages, Data Retention, and Tokens panels not properly contained within the tab system<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<p>Major rewrite focused on accessibility, modern admin UI, and GDPR compliance. All existing forms continue to work without changes.<\/p>\n\n<p><strong>Important:<\/strong> CSS changes (35 removed <code>!important<\/code> declarations) may affect frontend layouts customized via theme CSS. Use Contact Forms &gt; Theme Helper to identify conflicts. Where possible, use the plugin's Appearance tab instead of theme CSS overrides.<\/p>\n\n<ul>\n<li>Accessibility rewrite: WCAG 2.2 AA \/ European Accessibility Act compliance<\/li>\n<li>Inline Labels layout (floating labels)<\/li>\n<li>Live preview in the form editor<\/li>\n<li>GDPR data retention, anonymization, and WordPress Privacy API<\/li>\n<li>Cloudflare Turnstile support (via Simple Cloudflare Turnstile plugin)<\/li>\n<li>Google reCAPTCHA v2 with built-in key configuration<\/li>\n<li>Drag-and-drop file upload with keyboard navigation<\/li>\n<li>Telephone field with E.164 validation and country prefix<\/li>\n<li>Custom validation messages per field and per form<\/li>\n<li>Custom CSS class and ID on all field types<\/li>\n<li>Submissions list with sortable columns, row actions, and Excel export<\/li>\n<li>Dashboard charts with monthly-by-page breakdown<\/li>\n<li>Gutenberg block for inserting forms<\/li>\n<li>Settings page with Danger Zone and deactivation cleanup<\/li>\n<li>Theme Helper: diagnose CSS conflicts between your theme and Contact Forms<\/li>\n<li>English, Italian, and Spanish translations<\/li>\n<li>Plugin Check (PCP) fully compliant<\/li>\n<\/ul>\n\n<p>For the detailed per-beta changelog, see the plugin's changelog.txt file.<\/p>\n\n<h4>1.9.14<\/h4>\n\n<ul>\n<li>Added Cloudflare Turnstile field integration<\/li>\n<\/ul>","raw_excerpt":"Create accessible contact forms with drag-and-drop. WCAG 2.2 compliant with screen reader support, keyboard navigation, and clear error messages.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/24360","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=24360"}],"author":[{"embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/cimatti"}],"wp:attachment":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=24360"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=24360"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=24360"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=24360"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=24360"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=24360"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}