无法使用deactive_plugins()自停用插件

时间:2017-08-24 作者:l_nxy

我有这些插件文件:

我的插件/我的插件。php我的插件/我的插件类。php中my-plugin.php 我有以下几行:

register_activation_hook( __FILE__, array( $my_plugin_object, \'on_activate_my_plugin\' ) );
在中my-plugin-class.php 我有以下方法:

public function on_activate_my_plugin() {
    if ( // Some validation failed ) {
        wp_mail( \'[email protected]\' , \'test\', \'test\' );

        deactivate_plugins( \'my-plugin/my-plugin.php\' );
        add_action( \'admin_notices\', array( $this, \'my_plugin_activation_failed\' ) );
    }
}

public function my_plugin_activation_failed() {
    ?><div class="notice notice-error"><p>The <strong>My Plugin</strong> could not be activated because of something.</p><p>Do the thing and activate the plugin.</p></div><?php
}
我收到了电子邮件,但没有其他事情发生
插件不会自动停用<我也没有收到管理员通知。

我做错了什么?

非常感谢。

1 个回复
SO网友:Mark Kaplun

激活钩子是在插件被激活时触发的,充其量是一种危险的假设,即此时它已经处于活动状态,如果它不处于活动状态,显然您无法停用它。

如果您正在寻找激活失败的方法,最好的方法可能是die()

结束