使用我的定制插件进行插件管理

时间:2018-09-26 作者:Ali Erdem Akın

我正在为一个项目开发wordpress插件。我需要管理这个插件中的其他插件。例如,我将能够在我的插件上安装Akismet。我已经完成了安装、激活、停用等操作。但我无法删除插件。

我也可以删除直接附件文件,但我不想删除。我应该使用尽可能多的wordpress函数。

delete_plugins(\'litespeed-cache/litespeed-cache.php\')
此功能不起作用。我试图集成这个函数,但它非常复杂。你能帮帮我吗?

--EDİT--

对不起,我没注意。现在还有另一个问题。我写了一个新插件,当我添加以下代码时,它工作得很好。

register_activation_hook( __FILE__, \'index\' );

function index() {
    delete_plugins( [
        \'litespeed-cache/litespeed-cache.php\',
    ] );
}
但我自己的插件不起作用。

add_action(\'exampleUninstallPlugin\',\'exampleUninstallPlugin\'); function exampleUninstallPlugin($plugins){ delete_plugins($plugins); } add_action( \'rest_api_init\', \'customTestFunction\' ); function customTestFunction() { register_rest_route( \'turhost/rest\', \'/api\', array( \'methods\' => \'POST\', \'callback\' => \'show_fields\' ) ); } function show_fields( $request ) { $parameters = json_decode( base64_decode( $request->get_param( \'data\' ) ), true ); if ( $parameters[\'action\'] == "uninstallInstalledPlugin" ) { do_action(\'turhostUninstallPlugin\',[ \'litespeed-cache/litespeed-cache.php\' ]); } }

2 个回复
SO网友:Fabian Marz

正如您从docs. 参数必须是数组,而不是单个字符串。我不确定这是否能解决这个问题,因为我以前没有使用过这个函数。

因此,您的函数调用应该是:

delete_plugins([
  \'litespeed-cache/litespeed-cache.php\',
]);

-- Edit after question update: --

为了使add_action(\'exampleUninstallPlugin\',\'exampleUninstallPlugin\'); 工作,你需要调用exampleUninstallPlugin 来自某些代码的操作通过do_action(\'exampleUninstallPlugin\', $args) 就像你在show_fields 使用回调do_action(\'turhostUninstallPlugin\').

是你的show_fields 是否调用函数?如果是,则需要更正函数中的操作名称,反之亦然:

add_action(\'turhostUninstallPlugin\', \'turhostUninstallPlugin\');
function turhostUninstallPlugin($plugins) {
  delete_plugins($plugins);
}

function show_fields( $request ) {
  // …
  if ( $parameters[\'action\'] == "uninstallInstalledPlugin" ) {
    do_action(\'turhostUninstallPlugin\',[
      \'litespeed-cache/litespeed-cache.php\'
    ]);
  }
  // …
}

SO网友:Adnan

使用TGM插件激活,要求插件中的其他插件才能工作。

给你http://tgmpluginactivation.com/

结束