当我停用WooCommerce插件时,我想在我的插件中执行操作

时间:2021-08-05 作者:Abdullah Mahi

我有一个WoodPress插件,它依赖于WooCommerce。当用户卸载或停用WooCommerce插件时,在这一次,我的意思是当WooCommerce插件注册\\u deactivation\\u hook时,我想在我当前的活动插件中注意一下。我该怎么做?请帮忙。

1 个回复
SO网友:Tony Djukic

有两种方法可以做到这一点,您可以检查主插件文件,也可以检查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_initadmin_notices

那么我们有两个函数yourplugin_deactivate()yourplugin_admin_notice() 这是不言而喻的。我们停用your插件,然后在管理屏幕顶部发布通知,告诉用户我们做了什么以及为什么。

你看。。。

相关推荐

REGISTER_DEACTIVATION_HOOK参数->在所选函数中传递参数

我一直在寻找如何在register_deactivation_hook 具体如下:register_deactivation_hook( __FILE__, array( new Cpt, \'delete_cpt\') ) ); class Cpt { /** * Delete a custom post type */ public function delete_cpt($name = \'test\')