WordPress如何正确输出WP_Term对象中的name字段值到HTML页面
问题原因
你调用的get_the_terms() 函数返回值是WP_Term对象组成的索引数组,不是单独的WP_Term对象,你直接对数组调用->name属性自然无法获取到值。从你贴的var_dump结果也能看到,最外层是size=1的数组,第一个索引0对应的位置才是你要的Nebraska对应的term对象。
正确实现代码
单分类场景(每篇文章仅归属一个state分类)
适配你当前的使用场景,代码如下:
// 获取当前文章state分类法对应的分类项 $term_obj_list = get_the_terms( $post->ID, 'state' ); // 增加合法性判断,避免无分类、分类法不存在等异常场景报错 if ( $term_obj_list && ! is_wp_error( $term_obj_list ) ) { // 取数组第一个元素的name属性,转义后输出到h1标签 echo '<h1>' . esc_html( $term_obj_list[0]->name ) . '</h1>'; }
这里额外加esc_html()是WordPress官方推荐的安全处理逻辑,可避免潜在的XSS风险。
多分类场景(文章可归属多个state分类)
如果后续有单篇文章关联多个state分类的需求,可使用以下代码批量输出所有分类名称:
$term_obj_list = get_the_terms( $post->ID, 'state' ); if ( $term_obj_list && ! is_wp_error( $term_obj_list ) ) { $term_names = wp_list_pluck( $term_obj_list, 'name' ); echo '<h1>' . esc_html( implode( '、', $term_names ) ) . '</h1>'; }
内容的提问来源于stack exchange,提问作者The Advocates
相关产品推荐
相关产品推荐

