Plugins are convenient tools which allow WordPress users to extend the functionality of their interface. These pre-built solutions are used by website owners as well as developers for their own unique purposes. However, it happens many times when users feel that an installed solution would have performed the function differently. Developers also routinely receive requests to add new features or enhance the settings of a tool they had created. This is the reason why you need to make WordPress plugins extensible. It will future-proof your creation and also improve its performance besides enhancing your reputation as an expert professional. An extensible plugin can be defined as a tool which lets users alter their behavior without modifying the code. Let’s see how you can create such a solution.
Why Do You Need To Make Plugins Extensible?
A plugin is used for adding a feature which is not provided out of the box in the CMS. However, it is difficult to create a solution which satisfies every possible condition in its use case scenario. For instance, you create a plugin to convert HTML to WordPress. Now, people want that the images included in the text content are also shifted to the new interface. At the same time, there will be others who would not want to migrate the images. Allowing users to make a preferred choice to change the behavior of the tool according to their requirements is the best option to create a popular solution. This will eliminate the need for tinkering with the core files of the plugin. It will also reduce the number of service requests from unsatisfied users.
What Are Hooks?
In order to achieve the objective of making a tool extensible, you first need to know about WordPress hooks. As their name suggests, hooks hook into the core of the CMS and provide a way for a code to interact with or alter another bit of code. There are two kinds of hooks namely, actions and filters. A custom function named callback is required for using an action or a filter.
An action will let you run a particular function at a specific time. The callback function for action will run at a specific point in the execution of WordPress and perform a task desired by the user. Let’s say we install a plugin to send an e-mail notification when a person tries to retrieve her password. The retrieve_password action can be used in the following manner:
add_action( ‘retrieve_password’, ‘my_plugin_retrieve_password’ );
This code communicates the action we want to hook on to which in this case is retrieve_password and then the function which must be called on the execution of the action. This is how our final code will look:
Filters allow users to modify the data during an ongoing routine. Their callback function will accept a variable and then alter it before returning it. Let’s say we want to always stop users from requesting an email for resetting passwords. We can do so by simply hooking on the allow_password_reset filter. This will return false to the main variable which ascertains whether reset requests must be executed or not.
How To Make A Plugin Extensible By Adding Hooks?
We will now discuss how to make WordPress plugins extensible through hooks. Consider the following plugin which creates a sidebar widget for displaying the three latest post titles.
There can be various ways in which users would want to use this functionality. They may want to showcase the titles in a carousel instead of a simple list. A WooCommerce store owner may wish to display products from a specific category. The plugin in its current form will be unable to fulfill these requests. As a developer, you must use the following steps to start the process to future-proof the tool:
1. Study The Code To Identify Key Operations
The first step is to study the core code of a plugin to identify the main operations being performed by the main function. For instance, in the tool mentioned in our example, you can clearly see that it is generating a list of post titles. It is using get_posts to identify the posts which are then presented in the list. The plugin then returns the generated list. The main idea here is to recognize the operations where people would like to make some modifications.
2. Add Hooks To These Operations
Once you have zeroed in on the operations, it is time to add hooks to them. In our example, we will include a hook myplugin_get_posts to annul the results of get_posts. We have also inserted myplugin_get_posts_args to alter the arguments of get_posts. This will help an online store owner in displaying items from a specific product category. myplugin_list_item has been added so that the end user can customize the generation of a list item. myplugin_get_some_post_titles has been used to override the returned generated list. A person interested in displaying the list in a carousel can easily cancel the native output with this hook. This is how the plugin will look now:
We have used a basic plugin with a small code to demonstrate how a plugin can be made extensible. Developers associated with WordPress web development companies must use this kind of an approach to creating truly customizable tools which will be loved by the end users.