I have previously written on how to determine if a widget is active. This is helpful for widgets, but not for plugins.
WordPress has a couple of different functions that help you determine plugin status. They are both located in wp-includes/plugin.php
- `validate_plugin()` spits out an error if the plugin file does not exist or has an invalid header. This lets you know that the file is there.
- `is_plugin_inactive()` lets you know if the plugin is not active (using the `is_plugin_active()` function)
A function to get plugin status
Using these two functions, I put together a one-size-fits-all function `get_plugin_status()`.
The function returns `1` if the plugin is active; `2` if the plugin is inactive; `0` if the plugin is not installed.
/** * Check the status of a plugin. * * @param string $location Base plugin path from plugins directory. * @return int 1 if active; 2 if inactive; 0 if not installed */ function get_plugin_status($location = '') { if(is_plugin_active($location)) { return 1; } if(!file_exists(trailingslashit(WP_PLUGIN_DIR). $location)) { return false; } if(is_plugin_inactive($location)) { return 2; } }
Usage example
$status = get_plugin_status('akismet/akismet.php'); switch($status) { case 1: echo 'Akismet is active.'; break; case 2: echo 'Akismet is installed but inactive.'; break; case 0: echo 'Akismet is not installed or active.'; break; }
Update: `validate_plugin` was slow…
I changed from using validate_plugin because I was experiencing 300 milliseconds of processing time. This updated method is much faster.
You must be logged in to post a comment.