如何在PHP的HEREDOC字符串HTML代码块中调用执行PHP函数
问题原因
PHP 的 HEREDOC 语法仅支持解析变量、简单变量属性/数组访问逻辑,不支持直接解析函数调用语句。你示例中写的 $get_avatar($current_user->ID, 32) 会被PHP识别为「读取$get_avatar变量的值,再拼接($current_user->ID, 32)字符串」,不会触发函数执行。
解决方法
方法1:先赋值变量再插入(兼容所有PHP版本,最推荐)
先提前执行函数,将返回结果存入临时变量,再把变量插入HEREDOC中即可,示例代码:
// 提前执行函数获取头像HTML $avatar = get_avatar($current_user->ID, 32); // 插入HEREDOC $html = <<<EOD <div> <p>hi</p> {$avatar} </div> EOD;
包裹变量的花括号是可选的,加上可以避免变量名和后续字符产生解析歧义,更稳妥。
方法2:HEREDOC内直接调用(仅支持PHP 7.0及以上版本)
先将函数名赋值给字符串变量,再用花括号包裹调用语句,即可在HEREDOC内直接执行:
// 将函数名赋值给变量 $get_avatar = 'get_avatar'; // 直接在HEREDOC内调用 $html = <<<EOD <div> <p>hi</p> {$get_avatar($current_user->ID, 32)} </div> EOD;
注意事项
在WordPress短代码逻辑中,最终需要return生成的HTML字符串,不要直接echo输出,避免内容输出到错误的位置。
内容的提问来源于stack exchange,提问作者sw123456
相关产品推荐
相关产品推荐

