检查插件是否存在/活动“CLASS_EXISTS()”在插件区域不起作用

时间:2016-11-01 作者:Benmay

我有一个简单的if语句:

if (class_exists(\'Woocommerce\')) {
    echo \'yes\';
 } else {
    echo \'no\';
}
当在主题文件(例如functions.php)中使用它时,效果很好。但是当我在插件(plugins/myplugin/myplugin.php)上使用它时,它根本不起作用。如何检查插件是否存在/是否处于活动状态,以启用/禁用某些功能?我错过什么了吗?

2 个回复
最合适的回答,由SO网友:Syed Fakhar Abbas 整理而成

Woo Commerce提供code 要检查是否安装了WooCommerce,请执行以下操作:


/**
 * Check if WooCommerce is active
 **/
if ( in_array( \'woocommerce/woocommerce.php\', apply_filters( \'active_plugins\', get_option( \'active_plugins\' ) ) ) ) {
    // Put your plugin code here
}

如果不知道WooCommerce安装在哪里,则:


    $all_plugins = get_plugins();
    $active_plugins = get_option( "active_plugins" );

    foreach ( $all_plugins as $plugin_path => $value ) {

        if( basename( $plugin_path, ".php" ) == \'woocommerce\') {
            if( in_array( $plugin_path, $active_plugins ) ) {
                return true;
            }else {
                return false;
            }
        }
    }

SO网友:Mark Kaplun

最好的方法是在其他插件触发的操作中运行代码。如果它有一些初始化操作,那么它就是一个完美的解决方案。

否则,这种检查最好在堆芯上进行wp_loaded 钩子,当然不是之前plugins_loaded 钩直接运行它而不依赖于钩子将永远无法可靠地工作。