检查后自动停用插件

时间:2014-09-15 19:25:22

标签: wordpress plugins

我试图让我的Wordpress插件在简单检查后自动停用。它似乎正在调用admin_notices方法,但deactivate_plugin()方法没有做任何事情。这是在类构造函数中:

        // End if the theme isn't compatible
        if ( FALSE == $this->themesupport['support'] ) { // This test works fine

            add_action( 'admin_init',       array( &$this, 'deactivate_plugin' ) ); // Plugin doesn't deactivate
            add_action( 'admin_notices',    array( &$this, 'admin_notices' ) ); // I get notices

            if ( isset( $_GET['activate'] ) )
                unset( $_GET['activate'] );

            return;

        } // if()

该方法非常简单:

public function deactivate_plugin() {

                deactivate_plugins( plugin_basename( __FILE__ ) );

        } // deactivate_plugin()

在deactivate_plugin方法中放入一个echo,然后调用它。我也尝试过从核心中包含plugins.php文件而不做任何更改。

2 个答案:

答案 0 :(得分:0)

以下作品:

<?php
/**
 * Plugin Name: (SO) Self-deactivate with $_GET['my_deactivate']
 */

add_action( 'admin_init', function()
{
    if( isset( $_GET['my_deactivate'] ) )
    {
        deactivate_plugins( plugin_basename( __FILE__ ), true );
        $url = admin_url( 'plugins.php?deactivate=true' );
        header( "Location: $url" );
        die();
    }
});

激活后,输入添加?my_deactivate的任何管理员网址,例如:

http://example.com/wp-admin/users.php?my_deactivate

<子>参考:

答案 1 :(得分:0)

我在一个类中调用了deactivate_plugins(),而不是插件文件本身,这当然为 FILE

返回了错误的位置