如何编写一键式WordPress插件更新代码?

时间:2011-04-09 02:36:58

标签: upgrade wordpress oneclick

我的客户希望我制作插件并通过会员订阅系统销售。他们询问他们如何推出这个插件的更新。通常我在登录wp-admin后让插件拦截了仪表板。然后它检查服务器上是否有更新版本的插件。如果是这样,它会通知用户,以便他们可以通过单击再次下载。问题是他们必须解压缩文件,将其复制并重新保存插件设置。

有没有办法在插件更新时为插件编写一键更新?这样,它就消除了下载插件的其他步骤,解压缩,复制旧文件,并重新运行管理面板保存插件。

1 个答案:

答案 0 :(得分:3)

您可能需要采取一些步骤,其中大部分步骤都可以从wordpress如何处理自己的内部更新中轻松借用。

每次加载管理页面时都不要运行它,编写自己的_maybe_update_plugins()版本,并检查一个定时间隔,可能每天只检查一次。

“wp-admin / includes / class-wp-upgrader.php”中的WordPress WP_Upgrader课程(我相信你需要将它包含在你的插件中)做你做的事情想。看一下wp-admin / update.php并确保你在这里非常密切地模拟安全预防措施,因为如果不仔细的话,你可能会引入巨大的安全漏洞。

一旦您整理了通知并确保该过程是安全的,就像将新版本插件的网址传递给下面的代码一样简单,只需“$ download_link”。

$upgrader = new WP_Upgrader;
$upgrader->run(array(
  'package' => '', //this should be the name of your plugin
  'destination' => '', //this should be defined to the directory you want to install the plugin to
  'clear_destination' => false, //set this if you want to remove the old version first
  'clear_working' => true, //change this if you want to leave a copy of the zip file
  'is_multi' => false, //only change this if you're calling the function multiple times
));

如果这不能解决问题(我没有时间或动机来测试它),那么在WP_Upgrader类中再挖掘一下并借用它们的函数来下载和解压缩文件