Created
March 26, 2021 10:23
-
-
Save rosswintle/0f65bea09a59b19d4486f190c46198bb to your computer and use it in GitHub Desktop.
WordPress Spam Pixel code for WP Forms
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Plugin Name: Spam Pixel | |
* Description: This simple plugin integrates Ross's spam pixel idea with WP Forms | |
* Author: Ross Wintle | |
* Author URI: https://rosswintle.uk | |
* Text Domain: spam-pixel | |
* Domain Path: /languages | |
* Version: 0.1.0 | |
* | |
* @package Spam_Pixel | |
*/ | |
// Add field and CSS | |
add_action('wpforms_display_submit_before', 'spx_add_field'); | |
function spx_add_field($form_data) { | |
$ajax_url = admin_url('admin-ajax.php') . '?action=spx_pixel'; | |
echo '<div class="spx-captcha"></div>'; | |
echo <<<EOT | |
<style> | |
.spx-captcha { | |
width: 1px; | |
height: 1px; | |
} | |
form:focus-within .spx-captcha { | |
background-image: url($ajax_url); | |
} | |
</style> | |
EOT; | |
} | |
// Add admin-ajax endpoint | |
add_action('wp_ajax_spx_pixel', 'spx_pixel_submit'); | |
add_action('wp_ajax_nopriv_spx_pixel', 'spx_pixel_submit'); | |
function spx_pixel_submit() { | |
$ip_address = $_SERVER['REMOTE_ADDR']; | |
set_transient('spx_allow_' . $ip_address, '1', DAY_IN_SECONDS); | |
wp_die(); | |
} | |
// Check form submission | |
add_action('wpforms_process_before', 'spx_wpforms_process_before', 10, 2); | |
function spx_wpforms_process_before( $entry, $form_data ) { | |
$ip_address = $_SERVER['REMOTE_ADDR']; | |
if (false === get_transient('spx_allow_' . $ip_address)) { | |
wp_die('I don\'t think so!'); | |
} | |
} |
Thanks for your answer!
Ho, I see, and how is it block spam?
If the user didn't focus on the form so basically it means that's a robot?
From your experience, how safe is that?
Have a read of this. It should answer your questions.
https://rosswintle.uk/2021/03/css-only-spam-prevention-allow-list-captcha/
Thank you!!!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Do not accept form submission from who has not loaded our CSS background image.