简单数组查询:WordPress遍历people CPT文章ID数组输出文章标题
问题根因
从你贴的print_r输出能明确判断,$persons是纯一维数组,每个元素就是直接存储的文章ID数字,不存在嵌套的对象结构。你代码里写的$person->ID完全无效——遍历到的$person本身就是30131、29763这类数字,没有对象属性可读取,传给get_the_title()的实际是空值,自然拼接不出任何标题内容。
除此之外原代码还有两个小问题:
- 没有提前初始化
$peopleout变量,首次循环拼接时会触发PHP未定义变量的警告 - 最后
echo $peopleout语句末尾漏了分号,会触发PHP解析错误
修正后的可用代码
// 提前初始化拼接字符串 $peopleout = ''; foreach( $persons as $person_id ) { // 直接把作为元素值的ID传入函数即可 $title = get_the_title( $person_id ); $peopleout .= $title . ', '; } // 去掉末尾多余的逗号后输出,补全语句分号 echo rtrim( $peopleout, ', ' );
可选优化
如果需要严格只取people这个自定义文章类型的标题,避免ID对应其他内容类型时输出错误标题,可以在循环内加一层类型校验:
$peopleout = ''; foreach( $persons as $person_id ) { // 跳过不属于people CPT的条目 if ( get_post_type( $person_id ) !== 'people' ) { continue; } $title = get_the_title( $person_id ); $peopleout .= $title . ', '; } echo rtrim( $peopleout, ', ' );
内容的提问来源于stack exchange,提问作者RichardU
相关产品推荐
相关产品推荐

