我的客户希望我制作一个插件并通过会员订阅系统销售它。他们询问如何为这个插件推出更新。通常,我在登录 wp-admin 后让插件拦截了仪表板查看。然后它检查服务器上是否有更新版本的插件。如果是这样,它会通知用户,以便他们可以通过单击再次下载它。问题是他们必须解压缩文件,复制它们,然后重新保存插件设置。
有没有办法在需要更新时为插件编写一键更新?这样,它就消除了下载插件、解压缩、复制旧文件以及重新运行管理面板保存插件的其他步骤。
您可能需要采取一些步骤,其中大部分可以很容易地从 wordpress 如何处理它自己的内部更新中借用。
不要在每次加载管理页面时都运行它,编写您自己的_maybe_update_plugins()版本并让它每隔一段时间检查一次,大概每天一次左右。
'wp-admin/includes/class-wp-upgrader.php' 中的 WordPress WP_Upgrader类(我相信你需要将它包含在你的插件中)做你想做的事。看一下 wp-admin/update.php 并确保您非常仔细地模拟此处的安全预防措施,因为如果不仔细执行,您可能会引入巨大的安全漏洞。
一旦你整理好你的通知并确保该过程是安全的,就像将新版本插件的 url 传递给下面的代码一样简单,就像“$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 类中多挖掘一点,并借用它们的功能来下载和提取文件。