{"id":170528,"date":"2023-02-18T13:44:15","date_gmt":"2023-02-18T13:44:15","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/spam-prevention-for-contact-form-7-and-comments\/"},"modified":"2025-12-23T16:07:40","modified_gmt":"2025-12-23T16:07:40","slug":"spam-prevention-for-contact-form-7-and-comments","status":"publish","type":"plugin","link":"https:\/\/et.wordpress.org\/plugins\/spam-prevention-for-contact-form-7-and-comments\/","author":4852949,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.3.24","stable_tag":"1.3.24","tested":"6.9.4","requires":"4.7","requires_php":"","requires_plugins":null,"header_name":"Spam Prevention for Contact Form 7 and Comments","header_author":"SiteLint","header_description":"Automatic Spam Prevention for Contact Form 7 and Comments","assets_banners_color":"a883aa","last_updated":"2025-12-23 16:07:40","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.sitelint.com","rating":5,"author_block_rating":0,"active_installs":10,"downloads":4003,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.0":{"tag":"1.0","author":"ctomczyk","date":"2023-02-18 13:43:45"},"1.1":{"tag":"1.1","author":"ctomczyk","date":"2023-03-08 10:32:44"},"1.2":{"tag":"1.2","author":"ctomczyk","date":"2023-06-17 05:05:42"},"1.3":{"tag":"1.3","author":"ctomczyk","date":"2023-08-26 16:47:00"},"1.3.1":{"tag":"1.3.1","author":"ctomczyk","date":"2023-08-26 17:16:14"},"1.3.10":{"tag":"1.3.10","author":"ctomczyk","date":"2024-12-16 08:42:42"},"1.3.11":{"tag":"1.3.11","author":"ctomczyk","date":"2025-04-21 18:51:33"},"1.3.12":{"tag":"1.3.12","author":"ctomczyk","date":"2025-06-15 19:15:22"},"1.3.13":{"tag":"1.3.13","author":"ctomczyk","date":"2025-06-15 19:17:01"},"1.3.14":{"tag":"1.3.14","author":"ctomczyk","date":"2025-07-02 19:28:08"},"1.3.15":{"tag":"1.3.15","author":"ctomczyk","date":"2025-07-04 09:15:57"},"1.3.16":{"tag":"1.3.16","author":"ctomczyk","date":"2025-07-04 09:22:37"},"1.3.17":{"tag":"1.3.17","author":"ctomczyk","date":"2025-09-10 09:59:08"},"1.3.18":{"tag":"1.3.18","author":"ctomczyk","date":"2025-10-13 18:24:21"},"1.3.19":{"tag":"1.3.19","author":"ctomczyk","date":"2025-10-14 11:12:50"},"1.3.2":{"tag":"1.3.2","author":"ctomczyk","date":"2023-08-26 18:00:58"},"1.3.20":{"tag":"1.3.20","author":"ctomczyk","date":"2025-10-24 10:04:41"},"1.3.21":{"tag":"1.3.21","author":"ctomczyk","date":"2025-12-07 14:43:24"},"1.3.22":{"tag":"1.3.22","author":"ctomczyk","date":"2025-12-07 15:34:56"},"1.3.23":{"tag":"1.3.23","author":"ctomczyk","date":"2025-12-07 16:02:17"},"1.3.24":{"tag":"1.3.24","author":"ctomczyk","date":"2025-12-23 16:07:40"},"1.3.3":{"tag":"1.3.3","author":"ctomczyk","date":"2023-08-26 18:28:59"},"1.3.4":{"tag":"1.3.4","author":"ctomczyk","date":"2023-08-26 20:50:23"},"1.3.5":{"tag":"1.3.5","author":"ctomczyk","date":"2023-08-27 08:01:34"},"1.3.6":{"tag":"1.3.6","author":"ctomczyk","date":"2023-12-19 08:44:45"},"1.3.7":{"tag":"1.3.7","author":"ctomczyk","date":"2023-12-19 08:46:31"},"1.3.8":{"tag":"1.3.8","author":"ctomczyk","date":"2023-12-19 09:04:10"},"1.3.9":{"tag":"1.3.9","author":"ctomczyk","date":"2024-02-02 10:42:53"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3208400,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3208400,"resolution":"256x256","location":"assets","locale":""},"icon.svg":{"filename":"icon.svg","revision":3208408,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3208400,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3208400,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0","1.1","1.2","1.3","1.3.1","1.3.10","1.3.11","1.3.12","1.3.13","1.3.14","1.3.15","1.3.16","1.3.17","1.3.18","1.3.19","1.3.2","1.3.20","1.3.21","1.3.22","1.3.23","1.3.24","1.3.3","1.3.4","1.3.5","1.3.6","1.3.7","1.3.8","1.3.9"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3208400,"resolution":"1","location":"assets","locale":""}},"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[107,1152,1221,1178,599],"plugin_category":[44,54],"plugin_contributors":[211312],"plugin_business_model":[],"class_list":["post-170528","plugin","type-plugin","status-publish","hentry","plugin_tags-comments","plugin_tags-contact-form-7","plugin_tags-prevent","plugin_tags-protection","plugin_tags-spam","plugin_category-discussion-and-community","plugin_category-security-and-spam-protection","plugin_contributors-ctomczyk","plugin_committers-ctomczyk"],"banners":{"banner":"https:\/\/ps.w.org\/spam-prevention-for-contact-form-7-and-comments\/assets\/banner-772x250.png?rev=3208400","banner_2x":"https:\/\/ps.w.org\/spam-prevention-for-contact-form-7-and-comments\/assets\/banner-1544x500.png?rev=3208400","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/spam-prevention-for-contact-form-7-and-comments\/assets\/icon.svg?rev=3208408","icon":"https:\/\/ps.w.org\/spam-prevention-for-contact-form-7-and-comments\/assets\/icon.svg?rev=3208408","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/spam-prevention-for-contact-form-7-and-comments\/assets\/screenshot-1.png?rev=3208400","caption":""}],"raw_content":"<!--section=description-->\n<p>Spam Prevention for WP Contact Form 7 and WordPress Comments.\nThis plugin adds a small code snippet to determine page scroll and add dynamically a unique token.\nIt also supports the \"Contact Form 7 Database Addon - CFDB7\" and prevents contact form submissions from being saved if validation fails.<\/p>\n\n<p>If the token doesn't exists while submitting or call directly API then the incoming request will be rejected.<\/p>\n\n<p>You can see how it works on <a href=\"https:\/\/www.sitelint.com\/contact\">SiteLint<\/a> website.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload <code>\/contact-form-7-prevent-spam<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory or install \"Spam Prevention for Contact Form 7 and WordPress Comments\" plugin in WordPress.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>That's all.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>1.3.24<\/h4>\n\n<ul>\n<li>Ensure <\/li>\n<\/ul>\n\n<p>&lt;<\/p>\n\n<p>aside&gt; gets accessible name through aria-labelledby.<\/p>\n\n<h4>1.3.23<\/h4>\n\n<ul>\n<li>Make logo visually hidden<\/li>\n<\/ul>\n\n<h4>1.3.22<\/h4>\n\n<ul>\n<li>Determine when the event source was from the user or dispatched via EventTarget.dispatchEvent()<\/li>\n<\/ul>\n\n<h4>1.3.21<\/h4>\n\n<ul>\n<li>Add hidden field on the user action only<\/li>\n<\/ul>\n\n<h4>1.3.20<\/h4>\n\n<ul>\n<li>Added deterministic anti-spam tokens for WordPress comments and Contact Form 7 submissions.<\/li>\n<\/ul>\n\n<h4>1.3.19<\/h4>\n\n<ul>\n<li>Preventing false-positive \"Sending mail has been aborted\" errors in Contact Form 7 when no wp_footer() hook is available.<\/li>\n<\/ul>\n\n<h4>1.3.18<\/h4>\n\n<ul>\n<li>Adjusting styles for a logo<\/li>\n<\/ul>\n\n<h4>1.3.17<\/h4>\n\n<ul>\n<li>Updating styles for a logo to make it accessible WCAG SC 2.5.8: Target Size (Minimum) (Level AA)<\/li>\n<\/ul>\n\n<h4>1.3.16<\/h4>\n\n<ul>\n<li>Updating the README.txt about \"Contact Form 7 Database Addon - CFDB7\" support.<\/li>\n<\/ul>\n\n<h4>1.3.15<\/h4>\n\n<ul>\n<li>Supports the \"Contact Form 7 Database Addon - CFDB7\" and prevents contact form submissions from being saved if validation fails.<\/li>\n<\/ul>\n\n<h4>1.3.14<\/h4>\n\n<ul>\n<li>Updating Plugin Name<\/li>\n<\/ul>\n\n<h4>1.3.13<\/h4>\n\n<ul>\n<li>Retesting with WordPres 6.8.1<\/li>\n<\/ul>\n\n<h4>1.3.12<\/h4>\n\n<ul>\n<li>Wrap SiteLint logo into <\/li>\n<\/ul>\n\n<p>&lt;<\/p>\n\n<p>aside&gt;.<\/p>\n\n<h4>1.3.11<\/h4>\n\n<ul>\n<li>Retesting with WordPres 6.8<\/li>\n<\/ul>\n\n<h4>1.3.10<\/h4>\n\n<ul>\n<li>Retesting with WordPres 6.7.1<\/li>\n<li>Changing the plugin thumbnail<\/li>\n<\/ul>\n\n<h4>1.3.9<\/h4>\n\n<ul>\n<li>Adjusting and shortening link text to SiteLint<\/li>\n<\/ul>\n\n<h4>1.3.8<\/h4>\n\n<ul>\n<li>Fixing \"class SLSP_SiteLintSpamPreventionPublic does not have a method \"handleWpCommentFormSubmitAction\"\"<\/li>\n<\/ul>\n\n<h4>1.3.7<\/h4>\n\n<ul>\n<li>Uploading version verified on WordPress 6.4.2<\/li>\n<\/ul>\n\n<h4>1.3.6<\/h4>\n\n<ul>\n<li>Set lowest priority for adding SiteLint logo using PHP_INT_MAX<\/li>\n<\/ul>\n\n<h4>1.3.5<\/h4>\n\n<ul>\n<li>Fixing reference to the method handleSubmitContactForm7FormAction<\/li>\n<\/ul>\n\n<h4>1.3.4<\/h4>\n\n<ul>\n<li>Code formatting and updating version info; Tested up to: 6.3<\/li>\n<\/ul>\n\n<h4>1.3.3<\/h4>\n\n<ul>\n<li>Use wp_print_footer_scripts instead of wp_footer to print  code<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>Call add_action before function declaration<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Code formatting and updating version info<\/li>\n<\/ul>\n\n<h4>1.3<\/h4>\n\n<ul>\n<li>Change add_action to do_action; return $submission in handleSubmitContactForm7FormAction function<\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li>Replace empty string for \"action\" attribute in the <\/li>\n<\/ul>\n\n<p>&lt;<\/p>\n\n<p>form&gt; with a valid URL \"#\"<\/p>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>Determine, if whole contact form is rendered within current browser viewport and if so then apply solution immediately<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial version of the Plugin<\/li>\n<\/ul>","raw_excerpt":"Spam Prevention for WP Contact Form 7 (manage multiple contact forms) and WordPress Comments.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/170528","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=170528"}],"author":[{"embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ctomczyk"}],"wp:attachment":[{"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=170528"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=170528"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=170528"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=170528"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=170528"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=170528"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}