The preprocess_signup_form WordPress PHP action fires when the site sign-up form is sent.
Usage
add_action('preprocess_signup_form', 'your_custom_function'); function your_custom_function() { // your custom code here }
Parameters
- None
More information
See WordPress Developer Resources: preprocess_signup_form
Examples
Add a custom validation for user email
Check if the user email domain is allowed during sign-up.
add_action('preprocess_signup_form', 'validate_email_domain'); function validate_email_domain() { $email = $_POST['user_email']; $allowed_domain = 'example.com'; if (strpos($email, $allowed_domain) === false) { wp_die('Only example.com email addresses are allowed.'); } }
Block specific usernames from signing up
Prevent users from registering with specific usernames.
add_action('preprocess_signup_form', 'block_specific_usernames'); function block_specific_usernames() { $blocked_usernames = array('admin', 'test', 'demo'); $username = $_POST['user_name']; if (in_array($username, $blocked_usernames)) { wp_die('The selected username is not allowed. Please choose another one.'); } }
Log sign-up attempts
Log sign-up attempts to a file for analysis.
add_action('preprocess_signup_form', 'log_signup_attempts'); function log_signup_attempts() { $username = $_POST['user_name']; $email = $_POST['user_email']; $timestamp = date('Y-m-d H:i:s'); $log_entry = "$timestamp | $username | $email" . PHP_EOL; file_put_contents('signup_log.txt', $log_entry, FILE_APPEND); }
Set a minimum password length
Enforce a minimum password length during sign-up.
add_action('preprocess_signup_form', 'check_password_length'); function check_password_length() { $password = $_POST['password']; $min_length = 8; if (strlen($password) < $min_length) { wp_die("Password must be at least $min_length characters long."); } }
Add a honeypot field to prevent spam sign-ups
Add an invisible field to the sign-up form to catch bots.
add_action('preprocess_signup_form', 'honeypot_check'); function honeypot_check() { if (!empty($_POST['honeypot_field'])) { wp_die('Spam registration detected.'); } }