What are Modular Plugins
A modular plugin is a plugin that can be extended or modified without changing the core plugin code. I am fairly new to the WordPress world of development so this was an exciting topic for me. I have been a developer for many years and love the idea of making code extensible.
Modular Plugin Building Blocks
There are a few important functions in WordPress that make our job of writing modular plugins pretty easy. Not all of them have to be used to make your plugin extensible.
Here is a breakdown of each and what the WordPress codex says about each…
- apply_filters() – call the functions added to a filter hook
- add_filter() – hooks a function to a specific filter action.
- has_filter() – check if any filter has been registered for a hook
- add_action() – hooks a function on to a specific action
- do_action() – executes a hook created by add_action
- has_action() – check if any action has been registered for a hook
That’s a mouth full. Let’s see if we can break down what each of those means to us during plugin development.
apply_filters()
In its simplest form apply_filters() provides a way for your plugin to allow other plugins to replace text. For instance, if you have a shortcode to display some text you can use apply_filters() to allow other plugins to change that text.
function mpe_create_shortcode( $atts ) { // Set whatever text you would normally display $default_text = 'My Fancy Text'; // Return the apply_filters() function. It will replace your text // with the text from a calling hook return apply_filters('mpe_text', $default_text); } add_shortcode( 'mpeshortcode', 'mpe_create_shortcode' );
add_filter()
The add_filter() function will allow you to hook into a plugin where ever an apply_filter() has been used. Building on the apply_filters() example above you could modify that shortcode text in your plugin by calling add_filter() against the mpe_title hook.
function mpe_add_a_filter() { // Return the new text that will be displayed return 'A different fancy text'; } // Create the hook to mpe_text add_filter( 'mpe_text', 'mpe_add_a_filter' );
has_filter()
This function is provided as a means to check if the filter you are about to apply already exists.
function mpe_add_a_filter() { // Return the new text that will be displayed return 'A different fancy text'; } // Check if the hook exists if (!has_filter( 'mpe_text', 'mpe_add_a_filter' )) { // It doesn't exist so create the hook to mpe_text add_filter( 'mpe_text', 'mpe_add_a_filter' ); }
do_action()
This function is used to set entry points, or hooks, into your plugin. This is handy as it allows not only you, but other plugins to inject code at a specific point within your code.
function do_something() { // Create a hook for other functions/plugins to // perform an action whenever this function is called do_action('do_something_else'); }
add_action()
The add_action() function is probably the most used function in this group. It is used to hook a function in your plugin to an action hook in another plugin defined by the do_action function. WordPress itself has many action hooks that can be used to perform various functions at different points within WordPress. You can find a list of WordPress action hooks in the WordPress codex.
function another_something() { // Perform some action here; } // Perform the 'another_something' function in // place of the do_action('do_something_else') add_action('do_something_else', 'another_something');
has_action()
Similar to the has_filter() function has_action() is used to determine if an action is already in use before it is added.
function another_something() { // Perform some action here; } // Check if the action exists if (!has_action( 'do_something_else', 'another_something' )) { // It doesn't exist so create the hook to do_something_else add_action('do_something_else', 'another_something'); }
Leave a Reply
You must be logged in to post a comment.