Site icon BDWEBIT Blog

WordPress Custom Registration Form Programmatically: Step-by-Step Guide

WordPress Custom Registration Form Programmatically

You can create a custom registration form in WordPress programmatically by using WordPress hooks and functions such as wp_create_user(), register_post, and custom shortcodes. It is typically accomplished by writing PHP code, which is used to display the form (frontend) and submit the form (backend). That way, you will be able to avoid the default WordPress registration page and provide users with a more personalized sign-up, with its own custom fields, styling, and validation rules.

What is the Purpose of Designing a Special Registration Form?

The default register form in WordPress is bare bones- it requests a username and an email address. Nevertheless, the majority of companies require additional information during the registration of users. The following are the reasons why you may require a custom form:

Step 1: Register Form HTML

The first step is to write the form markup. You can create a shortcode that outputs the form anywhere on your site. For example:

php   Copy code

function custom_registration_form() {
ob_start(); ?>
<form method="post" action="">
<p>
<label for="username">Username</label>
<input type="text" name="username" required>
</p>
<p>
<label for="email">Email</label>
<input type="email" name="email" required>
</p>
<p>
<label for="password">Password</label>
<input type="password" name="password" required>
</p>
<p>
<label for="phone">Phone Number</label>
<input type="text" name="phone">
</p>
<p>
<input type="submit" name="custom_registration_submit" value="Register">
</p>
</form>
<?php
return ob_get_clean();
}
add_shortcode('custom_registration', 'custom_registration_form');

Now, if you add [custom_registration] to any WordPress page, the form will display.

Step 2: Handle Form Submission

After filling the form, you must handle the data and generate a new user.

php   Copy code
function handle_custom_registration() {
if (isset($_POST['custom_registration_submit'])) {
$username = sanitize_user($_POST['username']);
$email = sanitize_email($_POST['email']);
$password = sanitize_text_field($_POST['password']);
$phone = sanitize_text_field($_POST['phone']);

$errors = new WP_Error();

// Validation
if (username_exists($username)) {
$errors->add('username_error', 'This username is already taken.');
}
if (email_exists($email)) {
$errors->add('email_error', 'This email is already registered.');
}

if (empty($errors->errors)) {
$user_id = wp_create_user($username, $password, $email);
if (!is_wp_error($user_id)) {
update_user_meta($user_id, 'phone', $phone); // Save custom field
wp_new_user_notification($user_id, null, 'both'); // Notify admin and user
echo "Registration successful! You can now log in.";
} else {
echo "Error: " . $user_id->get_error_message();
}
} else {
foreach ($errors->get_error_messages() as $error) {
echo '<p style="color:red;">' . $error . '</p>';
}
}
}
}
add_action('init', 'handle_custom_registration');

The code will guarantee that the validity of any information is checked when a user fills in the form and a new account is opened.

Step 3: Store Custom Fields

By default, WordPress only stores username, email, & password. The update user meta can be used in order to save custom fields, such as a phone number.

Example:

php   Copy code
update_user_meta($user_id, 'phone', $phone);

It can later be accessed by:

php   Copy   code
get_user_meta($user_id, 'phone', true);

Step 4: Redirect After Registration

You can also redirect the user to a dashboard or login page to enhance the user experience once you have successfully registered.

php   Copy code
wp_redirect(home_url('/login/'));
exit;

Insert this line into the success condition of your registration handling procedure.

Step 5: Add Security Features

To render your own registration form more secure, you should consider:

Example of a nonce field:

php   Copy code
wp_nonce_field('custom_registration_action', 'custom_registration_nonce');

And verification:

php   Copy code
if (!isset($_POST['custom_registration_nonce']) ||
!wp_verify_nonce($_POST['custom_registration_nonce'], 'custom_registration_action')) {
die('Security check failed!');
}

Step 6: Style the Form with CSS

You can either include styles in your theme’s CSS file or enqueue a separate stylesheet.

php   Copy code
function custom_form_styles() {
wp_enqueue_style('custom-form-style', get_stylesheet_directory_uri() . '/custom-form.css');
}
add_action('wp_enqueue_scripts', 'custom_form_styles');

This way, you can design the form to match your website.

Step 7: Add Fields to the Form

You can easily add additional fields such as:

You can store each field using the update_user_meta() function for later use.

Step 8: Assign Custom User Roles

You may want to assign a specific role to new users. For example:

php   Copy code
$user_id = wp_create_user($username, $password, $email);
$user = new WP_User($user_id);
$user->set_role('subscriber');

You can change a subscriber to any role you’ve defined, including custom roles.

Best Practices for Custom Registration Forms

  1. Validate Input – Prevent invalid or harmful data.
  2. Sanitize Data – Use sanitize_text_field(), sanitize_email(), etc.
  3. Use Nonces – Protect against CSRF attacks.
  4. Redirect Users – Provide a smooth onboarding process.
  5. Add Notifications – Email users and admins about new registrations.
  6. Mobile-Friendly Design – Have the form compatible across all devices.

Conclusion

Creating a custom registration form programmatically in WordPress gives you complete control over user onboarding. A programmatically created form can add custom fields, provide special validations, and can be integrated into your theme and workflow, unlike a plugin that might contain unnecessary features or restrictions.

With the help of this guide, you will be able to create a safe, convenient, and completely personalized registration form that will improve the user experience on your WordPress site. Whether you’re running a membership site, an eCommerce store, or an online community, a custom form ensures you gather the right information and maintain full control.

Exit mobile version