Step-by-Step: Build a Contact Form Plugin for WordPress Websites
Shaista Siddique
Front end Developer | WordPress Innovator | Skilled in HTML, CSS,JavaScript, ReactJs & SEO Solutions.
Creating a custom contact form plugin for WordPress can significantly enhance your website's functionality and user engagement. Whether you're a beginner or an experienced developer, this step-by-step guide will walk you through the process of building a fully functional contact form plugin from scratch.
Why Build a Custom Contact Form Plugin?
WordPress offers numerous contact form plugins, but creating your own allows for complete customization and control. A custom plugin ensures your form aligns perfectly with your website's design and functionality needs. Plus, it’s a great way to learn more about WordPress development!
Prerequisites for Building a Contact Form Plugin
Before diving into the code, ensure you have the following:
Step 1: Set Up Your Plugin File
Start by creating a new folder for your plugin in the wp-content/plugins directory. Name it something like custom-contact-form. Inside this folder, create a PHP file, e.g., custom-contact-form.php.
Add the following code to define your plugin:
<?php
/*
Plugin Name: Custom Contact Form
Description: A simple custom contact form plugin for WordPress.
Version: 1.0
Author: Your Name
*/
// Prevent direct access to the file
if (!defined('ABSPATH')) {
exit;
}
This code registers your plugin with WordPress and ensures it can’t be accessed directly.
Step 2: Create the Contact Form HTML
Next, add the HTML structure for your contact form. Insert the following code into your plugin file:
function custom_contact_form() {
ob_start(); ?>
<form id="custom-contact-form" action="" method="post">
<label for="name">Name:</label>
<input type="text" name="name" required>
<label for="email">Email:</label>
<input type="email" name="email" required>
<label for="message">Message:</label>
<textarea name="message" required></textarea>
<input type="submit" name="submit" value="Send">
</form>
<?php
return ob_get_clean();
}
add_shortcode('custom_contact_form', 'custom_contact_form');
This code creates a shortcode [custom_contact_form] that you can use to display the form anywhere on your site.
Step 3: Handle Form Submissions
To process form submissions, add the following PHP code to your plugin file:
function handle_contact_form_submission() {
if (isset($_POST['submit'])) {
$name = sanitize_text_field($_POST['name']);
$email = sanitize_email($_POST['email']);
$message = sanitize_textarea_field($_POST['message']);
// Send email to admin
$to = get_option('admin_email');
$subject = 'New Contact Form Submission';
$body = "Name: $name\nEmail: $email\nMessage: $message";
wp_mail($to, $subject, $body);
// Display success message
echo '<p>Thank you for your message!</p>';
}
}
add_action('init', 'handle_contact_form_submission');
This code sanitizes user input and sends an email to the site admin when the form is submitted.
Step 4: Add Basic Styling
To make your form visually appealing, add some CSS. Create a new file named style.css in your plugin folder and include the following:
#custom-contact-form {
max-width: 600px;
margin: 0 auto;
padding: 20px;
border: 1px solid #ccc;
background-color: #f9f9f9;
}
#custom-contact-form label {
display: block;
margin-bottom: 8px;
font-weight: bold;
}
#custom-contact-form input, #custom-contact-form textarea {
width: 100%;
padding: 10px;
margin-bottom: 15px;
border: 1px solid #ddd;
border-radius: 4px;
}
#custom-contact-form input[type="submit"] {
background-color: #0073aa;
color: #fff;
border: none;
cursor: pointer;
}
#custom-contact-form input[type="submit"]:hover {
background-color: #005177;
}
Enqueue the stylesheet in your plugin file:
function enqueue_custom_styles() {
wp_enqueue_style('custom-contact-form-style', plugins_url('style.css', __FILE__));
}
add_action('wp_enqueue_scripts', 'enqueue_custom_styles');
Step 5: Add Validation and Security
To prevent spam and ensure data integrity, add validation and security measures:
function validate_contact_form() {
if (empty($_POST['name']) || empty($_POST['email']) || empty($_POST['message'])) {
echo '<p>All fields are required.</p>';
return false;
}
if (!is_email($_POST['email'])) {
echo '<p>Please enter a valid email address.</p>';
return false;
}
return true;
}
Update the handle_contact_form_submission function to include validation:
if (validate_contact_form()) {
// Process form submission
}
Step 6: Test Your Plugin
Activate your plugin from the WordPress admin dashboard and add the shortcode [custom_contact_form] to a page or post. Test the form to ensure it works as expected.
Step 7: Expand Functionality (Optional)
Conclusion
Building a custom contact form plugin for WordPress is a rewarding project that enhances your website's functionality and improves user engagement. By following this guide, you’ve created a fully functional plugin that can be customized further to meet your specific needs.