Wordpress - is_plugin_active() returning false on active plugin
is_plugin_active()
expects just the base name of the plugin as parameter:
So use:
is_plugin_active( 'woocommerce/woocommerce.php' );
The function will use the option 'active_plugins'
which is a list of plugins paths relative to the plugin directory already.
On a multi-site installation it will search in get_site_option( 'active_sitewide_plugins')
too.
As an implementation note: Avoid these checks. Some users rename plugin names or directories. Test for the functions you will actually use instead, eg:
if ( function_exists( 'woocommerce_get_page_id' ) )
{
// do something
}
in case you dont know which plugins are active you can do the following.
// get array of active plugins
$active_plugins = (array) get_option( 'active_plugins', array() );
// see active plugins 'plugin-dir-name/plugin-base-file.php'
echo '<pre>';
print_r( $active_plugins );
echo '</pre>';
if ( ! empty( $active_plugins ) && in_array( 'plugin-dir-name/plugin-base-file.php', $active_plugins ) ) {
// do something if plugin is active
}
for reference take a look into is_plugin_active function inside 'wp-admin/includes/plugin.php'
function is_plugin_active( $plugin ) {
return in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) || is_plugin_active_for_network( $plugin );
}