Plugin Development from Scratch: Creating Custom Metaboxes

WordPress is a powerful and flexible platform that allows users to create and manage websites with ease. One of the most valuable features of WordPress is its ability to be extended through plugins. Plugins are packages of code that add new features or extend existing ones within a WordPress website. In this chapter, we will focus on creating custom metaboxes from scratch as part of plugin development.

Introduction to Metaboxes

Metaboxes are user interfaces that appear on the post, page, or custom post type edit pages in the WordPress admin panel. They provide a means for users to enter and manage additional information that is not covered by standard WordPress fields such as title and content editor. Custom metaboxes can be used to collect and display all types of data, from simple text to complex selections of data.

Custom Metabox Planning

Before we start coding our custom metabox, it's important to plan its functionality. Ask yourself:

  • What is the purpose of the metabox?
  • What type of data should it collect or display?
  • What types of posts or pages should it appear on?
  • What fields are needed to collect this data?

Once we have a clear plan, we can begin implementation.

Configuring the Plugin

The first step is to create a new plugin. Create a new folder inside the /wp-content/plugins/ directory and a PHP file with the name of your plugin. Inside this file, start with a standard WordPress plugin header:



Activate the plugin through the WordPress admin panel.

Creating the Metabox

With the plugin activated, we can start writing the functionality to add a custom metabox. Let's add an action to the add_meta_boxes hook, which is where we define and register our metaboxes.

add_action('add_meta_boxes', 'sp_add_custom_metabox');

function sp_add_custom_metabox() {
    add_meta_box(
        'sp_custom_metabox', // Metabox ID
        'Additional Information', // Metabox Title
        'sp_display_custom_metabox', // Callback Function
        'post', // Post Type
        'normal', // Context
        'high' // Priority
    );
}

The sp_display_custom_metabox function is where we will define the HTML of our metabox and the fields it will contain. Let's create this function now:

function sp_display_custom_metabox($post) {
    // Use nonce for verification
    wp_nonce_field(basename(__FILE__), 'sp_custom_metabox_nonce');

    // Get current values, if any
    $meta_value = get_post_meta($post->ID, '_sp_meta_value', true);

    // Metabox content
    echo '<label for="sp_meta_value">Additional Value:</label>';
    echo '<input type="text" name="sp_meta_value" id="sp_meta_value" value="' . esc_attr($meta_value) . '">';
}

Saving Metabox Data

After creating the metabox and displaying the necessary fields, we need to deal with saving this data when the post is saved. To do this, let's hook a function to the save_post hook.

add_action('save_post', 'sp_save_metabox_data');

function sp_save_metabox_data($post_id) {
    // Check the nonce
    if (!isset($_POST['sp_custom_metabox_nonce']) || !wp_verify_nonce($_POST['sp_custom_metabox_nonce'], basename(__FILE__))) {
        return $post_id;
    }

    // Check if the current user has permission to edit the post
    if (!current_user_can('edit_post', $post_id)) {
        return $post_id;
    }

    // Check that it is not an automatic save
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return $post_id;
    }

    // Sanitize and save data
    $new_meta_value = (isset($_POST['sp_meta_value']) ? sanitize_text_field($_POST['sp_meta_value']) : '');
    update_post_meta($post_id, '_sp_meta_value', $new_meta_value);
}

This function checks security, user permission and that it is not an automatic save before sanitizing and saving the sent data.

Conclusion

Developing custom metaboxes is an effective way to add specific functionality to your WordPress website. By following the steps outlined above, you will be able to create metaboxes that can collect and display data according to your website's needs. Remember to always prioritize safety and sanitationdata action to keep your website protected. With practice and experimentation, you can further expand your plugin development skills and create even more robust solutions for your users.

We hope this guide has been helpful on your WordPress learning journey. Keep exploring and developing your skills to create even better, more functional websites.

Now answer the exercise about the content:

What is the purpose of the `sp_save_metabox_data` function in developing custom metaboxes for WordPress?

You are right! Congratulations, now go to the next page

You missed! Try again.

Article image Plugin development from scratch: Working with the Customizer

Next page of the Free Ebook:

107Plugin development from scratch: Working with the Customizer

6 minutes

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text