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

PHP邮件正文中the_plugins()函数无法显示内容的问题求助

解决wp_mail中自定义函数内容无法显示在邮件正文的问题

这问题我之前也碰到过!核心原因是你写的the_plugins()函数是直接用print输出内容,而不是返回字符串。当你把它拼接到$body里的时候,函数执行时会直接把内容输出到当前页面(而不是存到$body变量中),同时函数本身返回的是null,所以邮件里对应位置就空了。

解决方案:修改函数为返回字符串形式

把the_plugins()改成返回拼接好的字符串,而不是直接输出。修改后的函数如下:

function the_plugins() {
    $the_plugs = get_option('active_plugins');
    $plugin_list = ''; // 初始化空字符串存储插件列表
    foreach($the_plugs as $key => $value) {
        $string = explode('/',$value);
        $plugin_list .= $string[0] . '<br />'; // 逐个拼接插件名称
    }
    return $plugin_list; // 返回最终的插件列表字符串
}

完整修改后的代码

同时我还修正了你代码里的两个小语法错误(漏加分号和邮件头格式错误),完整代码如下:

// Email details
$name = 'Davo';
$recipient = 'info@davo.com';
$from = 'sender@example.com'; // 补上缺失的分号
$subject = 'Testing';

// 修改后的插件列表函数
function the_plugins() {
    $the_plugs = get_option('active_plugins');
    $plugin_list = '';
    foreach($the_plugs as $key => $value) {
        $string = explode('/',$value);
        $plugin_list .= $string[0] . '<br />';
    }
    return $plugin_list;
}

// Message
$body = '<p>Hello ' . $name . ',</p>';
$body .= '<p>Your website has these plugins:</p>';
$body .= the_plugins();
$body .= '<p>Have a nice day.</p>';

$headers[] = 'Content-type:text/html;charset=UTF-8';
$headers[] = 'From: ' . $name . ' <' . $from . '>'; // 补上From后的冒号
$headers[] = 'Reply-To: ' . $from;
$headers[] = 'MIME-Version: 1.0';

wp_mail($recipient, $subject, $body, $headers);

为什么之前直接调用能看到内容?

当你直接执行echo the_plugins(); exit;时,函数里的print语句会直接把内容输出到浏览器,所以你能看到插件列表,但这部分内容并没有被存入$body变量,而是提前输出到了页面,自然不会出现在邮件正文中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:19:20