WordPress:为自定义函数添加自定义add_filter

时间:2017-08-15 08:15:36

标签: php wordpress email filter

我正在处理需要过滤自定义函数内容的场景。我的功能用于发送电子邮件,但我需要像wp_mail hook一样过滤它。

这是我的功能:

class Country(models.Model):
    name = models.CharField(max_length=255)

    def __str__(self):
        return self.name

我想在发送电子邮件之前过滤“$ to”变量。与wp_mail filter hook类似的东西。

我搜索了很多,请在这方面帮助我。非常感谢你。

1 个答案:

答案 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'过滤器会返回主页的地址。

在这个例子中,我们甚至没有注意到传入的参数(主页面),因为我们知道我们只是要完全覆盖它。

请记住:使用过滤器时,必须始终返回一些内容。