插件在激活错误时停用自身

时间:2016-01-29 作者:Bryan Willis

嗨,我想知道是否有人能给我指出正确的方向。我很难弄清楚deactivate\\u plugins()是如何工作的。我已经使用下面的变体有一段时间了,直到最近它似乎一直在工作。

register_activation_hook(__FILE__, \'my_plugin_activate_deactivate\');
add_action(\'after_switch_theme\', \'my_plugin_activate_deactivate\');

function my_plugin_activate_deactivate() {
    if ( !function_exists (\'mythemename\') {
      deactivate_plugins( plugin_basename(__FILE__) );
    }
}
第一个问题是register_activation_hook 角色根本不起任何作用。。。无论MythMeName函数是否存在,插件都会激活。

我甚至试过这样做,但插件仍然会激活。

register_activation_hook(__FILE__, \'my_plugin_activate_deactivate\');

function my_plugin_activate_deactivate() {
      deactivate_plugins( plugin_basename(__FILE__) );
}
更糟糕的是,使用after_switch_theme part在切换主题时抛出500服务器错误,需要通过ftp/sftp手动禁用插件。

我的目标是有一个“主题功能插件”,它可以检查主题是否处于活动状态,如果没有,则会自动停用。我错过了什么?有什么明显的?我觉得好像有拼写错误或是一些愚蠢的事情,因为这在过去似乎总是有效的。。。

Update : 我在服务器上激活了一个错误日志,正在获取有关deactivate_plugins():

Call to undefined function deactivate_plugins() in /path/to/plugin/plugin-name.php on line 25

1 个回复
SO网友:RichyVN

您可能需要在代码中包含这一行

require_once( ABSPATH . \'wp-admin/includes/plugin.php\' );
插件。php文件不会自动包括在内。