我试图让我的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文件而不做任何更改。
答案 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
返回了错误的位置