You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用send_new_site_email过滤器禁用新站点邮件失效,原因何在?

导致send_new_site_email过滤器未生效的常见原因

以下是几种可能让你的代码失效的情况,以及对应的解决办法:

  • WordPress版本过低
    send_new_site_email过滤器是在WordPress 5.5版本才引入的。如果你的多站点平台版本低于5.5,这个钩子根本不存在,代码自然不会生效。你可以在后台仪表盘的「更新」页面确认当前版本,若版本过低,升级到5.5及以上版本即可。

  • 代码放置位置错误
    如果你把代码放在主题的functions.php文件中,可能会出现以下问题:

    • 当主题被更新时,代码会被覆盖;
    • 多站点中每个站点可以独立选择主题,只有使用该主题的站点才会加载这段代码,无法全局禁用邮件。
      正确的做法是将代码放在**Must-Use插件(mu-plugins)**文件夹中:
    1. 在你的WordPress根目录下找到wp-content/mu-plugins文件夹(如果没有就新建一个);
    2. 创建一个新的PHP文件(比如disable-new-site-email.php),将你的代码粘贴进去;
    3. 保存文件后,WordPress会自动加载这个文件,对所有站点生效。
  • 过滤器优先级被覆盖
    你的代码使用了默认的优先级10,如果有其他插件或自定义代码使用了更高的优先级(比如20),并且将$send重新设为true,你的代码就会被覆盖。可以尝试提高你的过滤器优先级,确保最后执行:

    function disable_email($send,$site,$user){
        $send = false;
        return $send;
    }
    add_filter( 'send_new_site_email', 'disable_email', 99, 3 );
    
  • 第三方注册插件绕过了默认邮件逻辑
    如果你的多站点使用了第三方注册插件(比如专门的站点注册工具),这些插件可能没有调用WordPress原生的wp_send_new_site_email函数,而是自行实现了邮件发送逻辑。这种情况下,send_new_site_email过滤器就无法生效,你需要查看该插件的文档,找到对应的禁用邮件设置或钩子。

  • 代码存在隐性语法错误
    虽然你贴出的代码看起来没问题,但如果实际使用时出现了隐性语法错误(比如中文引号、遗漏分号、函数名冲突等),也会导致代码失效。可以检查代码的语法,或者将代码简化后重新测试,确保没有语法问题。


内容的提问来源于stack exchange,提问作者Webdever

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 23:55:13