有两种方法可以做到这一点,您可以检查主插件文件,也可以检查WooCommerce类。当我让一个插件依赖于其他插件时,我通常会检查插件文件,但对于WooCommerce,我会检查WooCommerce类。
<?php
function yourplugin_init() {
if( !function_exists( \'is_plugin_inactive\' ) ) :
require_once( ABSPATH . \'/wp-admin/includes/plugin.php\' );
endif;
//COMMON WOOCOMMERCE METHOD
if( !class_exists( \'WooCommerce\' ) ) :
//ALTERNATIVE METHOD
//if( is_plugin_inactive( \'woocommerce/woocommerce.php\' ) ) :
add_action( \'admin_init\', \'yourplugin_deactivate\' );
add_action( \'admin_notices\', \'yourplugin_admin_notice\' );
function yourplugin_deactivate() {
deactivate_plugins( plugin_basename( __FILE__ ) );
}
function yourplugin_admin_notice() {
echo \'<div class="error"><p><strong>WooCommerce</strong> must be installed and activated to use this YOURPLUGIN.</p></div>\';
if( isset( $_GET[\'activate\'] ) ) unset( $_GET[\'activate\'] );
}
endif;
}
add_action( \'plugins_loaded\', \'yourplugin_init\' );
?>
首先,在添加任何自定义功能之前,将上述代码放在主插件文件中。
我们创建一个运行的函数plugins_loaded
; 检查WPis_plugin_inactive
函数执行,如果不执行,则加载WP插件文件。
接下来,我们检查a)是否WooCommerce
类不存在或b)我已经注释掉的替代方法,我们使用插件的主PHP文件(即。woocommerce/woocommerce.php
).
现在,如果我们已经确定WooCommerce不处于活动状态(使用上述两种方法之一),那么我们将挂接两个单独的操作。admin_init
admin_notices
那么我们有两个函数yourplugin_deactivate()
和yourplugin_admin_notice()
这是不言而喻的。我们停用your插件,然后在管理屏幕顶部发布通知,告诉用户我们做了什么以及为什么。
你看。。。