为什么WordPress会自动打印数组内容而非仅完成数组构造?
问题原因
- WordPress 中所有以
the_作为前缀的模板函数,默认逻辑都是直接输出内容到页面,不会将结果返回给变量存储。你用到的the_meta()就属于这类函数,执行时会自动打印当前文章所有自定义字段的<ul>格式列表,且本身没有有效返回值,你存入$bucket数组的实际上是空值,页面打印的内容是the_meta()执行时直接输出的。 - 对应的,WordPress 中以
get_作为前缀的同源函数才会返回处理结果,不会自动输出内容。
解决方案
方案1:获取原始自定义字段数组(推荐)
替换为get_post_meta()函数读取字段内容存入数组即可:
$bucket = array(); while ( have_posts() ) { the_post(); // 第三个参数传true表示返回单值格式,传false返回数组格式,可按需调整 $bucket[] = get_post_meta( get_the_ID(), '', true ); }
方案2:获取the_meta生成的HTML结构
如果你确实需要保留the_meta()输出的标准化HTML结构,可以用输出缓冲捕获内容再存入数组:
$bucket = array(); while ( have_posts() ) { the_post(); ob_start(); the_meta(); $bucket[] = ob_get_clean(); }
内容的提问来源于stack exchange,提问作者Webdev Tory
相关产品推荐
相关产品推荐

