激活时停用其他不兼容的插件

时间:2016-02-17 作者:j8d

我正在构建两个互不兼容的插件。当其中一个激活时,另一个必须停用。我正在使用下面的代码来实现这一点。

在我第一次上传并激活第二个插件时,它工作得很好,但如果我尝试在管理面板中激活非活动插件,它只会停用两个插件。(尽管我收到一条确认消息,上面写着“插件已激活”骗子!)然后我可以激活这两个插件中的任何一个。

你知道问题出在哪里吗?

function deactivate_other_plugin() {
    if( is_plugin_active(\'plugin_folder/plugin_file.php\') ) {
    deactivate_plugins(\'plugin_folder/plugin_file.php\');    
    }
}
add_action( \'admin_init\', array( $this, \'deactivate_other_plugin\' ) );

1 个回复
SO网友:j8d

好的,基于这些评论,我决定阻止激活并发送一个管理员通知。

add_action( \'admin_notices\', \'lsmi_admin_notice\' );
add_action( \'network_admin_notices\', \'lsmi_admin_notice\' );
function lsmi_admin_notice() {
    if( class_exists ( \'Location_Specific_Menu_Items_By_City\' ) ){
        global $pagenow;
        if( $pagenow == \'plugins.php\' ){
            deactivate_plugins ( \'lsmi-by-country/LSMI_Country.php\' );
            if ( current_user_can( \'install_plugins\' ) ) {
                echo \'<div id="error" class="error notice is-dismissible"><p>Error. Please deactivate LSMI by City first and try again.</div>\';
            }
        }
    }
}

相关推荐