So I have the following in an include in my theme file:
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
if ( is_plugin_active( WP_PLUGIN_DIR . '/woocommerce/woocommerce.php' ) ) {
$shop_id = woocommerce_get_page_id( 'shop' );
$shop_page = get_page( $shop_id );
}
but is_plugin_active( WP_PLUGIN_DIR . '/woocommerce/woocommerce.php')
is returning false, despite the fact that the plugin is active.
I’m wondering if is_plugin_active()
might be tripped up by the theme customizer, because the fact that I’m doing this while hooked to customize_preview_init
is the only gotcha that I can imagine would be causing issue. Any insights?
is_plugin_active()
expects just the base name of the plugin as parameter:So use:
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:
in case you dont know which plugins are active you can do the following.
for reference take a look into is_plugin_active function inside ‘wp-admin/includes/plugin.php’