在开发 wpsite 主题的时候,有一个需求,就是审核链接邮件通知功能,其实这个通知邮件并不需要实时发送,只需要先完成审核的逻辑,再发送邮件通知即可。这样的场景其实很多见,比如评论审核通过邮件通知,账号资料修改成功邮件通知,投稿文章审核邮件通知等等,凡是不需要实时通知的我们都可以采用本文分享的异步发送邮件的方法。
首先我们来认识一下 WordPress 可扩展函数(pluggable)的作用及用法,Wordpress 核心函数中有一些函数称为可扩展函数(pluggable functions),这些函数都是在 wp-include/pluggable.php 中被定义的,正如它们的名字一样,我们可以通过插件来重写或者加强它们的功能。
可扩展函数的真正强大之处在于我们可以自定义函数来增强或改变原有函数的行为。在 pluggable.php 中可以找到这些函数的定义,或者在 WP 文档 Pluggable Functions 中找到它们。以下有几个经常被重写的核心函数:
wp_logout 用于登出 WP 系统,你可以在这里加入一些自定义的操作(如移除自定义 SESSION 等)。
wp_mail 是被扩展的最多的 WP 函数,可以通过覆写它来使用自己的邮件模版、使用其它的发送邮件方式(如 SMTP)等。
wp_new_user_notification 可以修改新用户注册时发送邮件的方式。
auth_redirect 用于在用户未登录时重定向操作到登录页,可以用它来显示一些自定义的信息。
接着我们来熟悉下这个可扩展函数的加载顺序:
所以的自定义扩展函数都应该放在 pluggable.php 文件被加载之前定义,即在插件中定义;
如果插件中没有定义扩展函数,将会默认执行 pluggable.php 中定义的函数;
你无法在主题中定义扩展数,因为主题会在 pluggable.php 之后加载,此时这些可扩展函数都是已经被定义过的了。 所以我们只能够在插件中来重写这些函数(自己创建一个插件的方式非常简单)。接下来的问题就是如果多个插件中同时重写了同一个可扩展函数时将会怎样呢?这个时候就无法再像我们预期那样执行了,系统总会调用第一次被定义的那个函数。
回到本文的主题,要想实现 WordPress 异步发送邮件通知,我们需要在插件中重写 wp_mail 函数,然后调用 wordpress 的定时任务来实现
你可能对这些文章感兴趣:
- 出现$(...).affix is not a function的解决办法
- mirai机器人插件:淘口令转换插件分享
- mirai机器人插件:影视搜索插件微搜片分享
- wordpress插件WP Term Order分类排序
- wordpress后台链接添加nofollow选项
- wordpress中文标签404及标签分页打不开解决办法
- wordpress插件中文汉化指南
- wordpress集成灯箱插件fancybox3
- 在wordpress主题开发中正确理解和使用 template_redirect 和 template_include
- wordpress主题前台调用编辑器,快速集成TinyMCE编辑器
- Timthumb无法显示七牛等云存储图片怎么办?
- wordpress插件启用出错如何排查?
- wordpress有偿服务谁更可靠,需要从这几个方面综合考虑
- 自定义wordpress问答插件DW Question & Answer样式和模板
如有疑问,请前往问答中心反馈!
反馈