WP古腾堡编辑器:短码引入PHP文件位置异常问题求助
问题原因与修复方案
问题原因
WordPress短码函数要求返回内容而非直接输出内容。你的代码中直接调用include('file.php'),当PHP执行到这一行时,file.php里的内容会直接输出到浏览器,而此时文章主体内容还在WordPress的缓冲区中等待构建,因此被提前输出的内容就跑到了文章顶部。
修复方案
有两种常用的修复方式:
方式1:使用输出缓冲捕获内容
修改functions.php中的短码函数,通过输出缓冲把include的内容捕获后返回:
function include_file( $atts ) { ob_start(); // 开启输出缓冲 include('file.php'); return ob_get_clean(); // 捕获缓冲内容并关闭缓冲,将内容返回给短码 } add_shortcode( 'my-php-file', 'include_file' );
方式2:修改被引入的file.php,让它返回内容
如果可以修改file.php,把里面的直接输出逻辑改成返回字符串。比如原file.php是:
echo '<div>这是要显示的内容</div>';
修改为:
return '<div>这是要显示的内容</div>';
然后短码函数改为:
function include_file( $atts ) { return include('file.php'); } add_shortcode( 'my-php-file', 'include_file' );
额外注意
如果file.php的路径不是相对于当前主题目录,建议使用绝对路径避免错误,比如:
ob_start(); include(get_template_directory() . '/file.php'); return ob_get_clean();
内容的提问来源于stack exchange,提问作者php-newbie23
相关产品推荐
相关产品推荐

