我正在处理需要过滤自定义函数内容的场景。我的功能用于发送电子邮件,但我需要像wp_mail hook一样过滤它。
这是我的功能:
class Country(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
我想在发送电子邮件之前过滤“$ to”变量。与wp_mail filter hook类似的东西。
我搜索了很多,请在这方面帮助我。非常感谢你。
答案 0 :(得分:1)
我认为你需要使用apply_filters($tag, $value)
传递'值'每个功能的参数都被吸引了#39; (使用add_filter)到指定的过滤器'标记'。每个函数对值执行一些处理,并返回一个修改后的值,以传递给序列中的下一个函数。
现在让我们看一下Customizr主题中的一个简单示例。让我们更改徽标中链接的网址:
// Change url that is linked from logo
add_filter( 'tc_logo_link_url', 'change_site_main_link' );
function change_site_main_link() {
return 'http://example.com';
}
在Customizr核心代码中,在显示徽标的函数中(在class-header-header_main.php中),Customizr具有:
apply_filters( ‘tc_logo_link_url’, esc_url( home_url( ‘/’ ) ) )
这是我们的add_filter()挂钩的地方。 esc_url()函数消除了url中的无效字符等,home_url()函数检索该站点的主URL。所以没有任何过滤,'tc_logo_link_url'过滤器会返回主页的地址。
在这个例子中,我们甚至没有注意到传入的参数(主页面),因为我们知道我们只是要完全覆盖它。
请记住:使用过滤器时,必须始终返回一些内容。