如何在发现插件更新时发送邮件?

时间:2020-05-07 作者:Saeesh Tendulkar

当发现任何插件更新触发使用PHP的邮件时,是否有任何挂钩?我找到了upgrader\\u process\\u complete hook的引用,但它是在插件更新之后调用的,而不是之前调用的。

此外,我如何获取在给定时间有待定更新的插件列表?

2 个回复
SO网友:Rup

相关代码为wp_update_plugins(). 您可以看到,它将其状态存储在一个名为“update\\u plugins”的站点瞬态中:

set_site_transient( \'update_plugins\', $new_option );
以及we can hook that:

pre\\u set\\u site\\u transient\\u update\\u plugins-在set\\u site\\u transient()的开头调用

  • set_site_transient( \'update_plugins\', ... ) 作为更新的一部分调用两次:一次更新上次检查的时间戳,一次使用新插件更新列表;因此,第一次调用总是有一个更改的值,而不必更改更新的插件列表。删除插件时也可以调用它,以删除任何已删除插件的更新标志,但在这种情况下只能调用一次
我很欣赏挂接站点临时更新似乎有点像黑客,但没有其他明显的地方可以挂接更新检查是否完成。我看到付费插件也将其作为生成其他地方托管的插件所需更新的一种方式。

当然,您也不需要挂接实际的更新,但可以安排一个cron作业来检查get_site_transient( \'update_plugins\' ) (和update_themesupdate_core) 生成通知电子邮件。

SO网友:jasper_prikr

有了Rup的答案,您可以使用wp\\U邮件功能创建一个简单的邮件。

看起来是这样的:

 wp_mail( get_bloginfo( \'admin_email\' ), \'Subject title here\', \'Text for mail here\'); 
使用get_bloginfo( \'admin_email\' ) 您将检索安装期间填写的管理员电子邮件。

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。