WordPress短码嵌套调用失效问题及解决方案咨询
解决WordPress多层短码嵌套解析问题
问题根源
你当前的[stage1]短码只是直接输出从文件读取的文本,WordPress不会自动解析文本内的短码标签;而你尝试在文本里写PHP代码的方式完全无效——插件读取的是字符串内容,不会执行其中嵌套的PHP代码,所以才会输出空白。
修复方案
修改[stage1]的短码代码,用WordPress内置的do_shortcode()函数包裹输出内容,让系统自动解析文本中的子短码:
<?php // 建议用绝对路径指定文件位置,避免路径错误 $file = get_stylesheet_directory() . '/scenarios.txt'; $file_arr = file($file); if (!empty($file_arr)) { $last_arr_index = count($file_arr) - 1; $rand_index = rand(0, $last_arr_index); $rand_text = $file_arr[$rand_index]; // 核心:用do_shortcode处理读取到的文本,解析其中的子短码 echo do_shortcode($rand_text); } else { echo "场景文件为空或不存在"; } ?>
后续操作注意
- scenarios.txt里只需直接写带短码的原生文本,比如:
不需要添加任何PHP代码,[person1] 和 [person2] 一起去散步 [person2] 教 [person1] 做手工do_shortcode()会自动处理其中的[person1]、[person2]短码。 - 务必确认文件路径正确,上面的代码用
get_stylesheet_directory()指向当前主题目录,如果你把scenarios.txt放在其他位置,替换成对应的绝对路径即可。
内容的提问来源于stack exchange,提问作者Lyra Logan
相关产品推荐
相关产品推荐

