You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中the_terms()未按预期渲染分类法链接如何解决

问题根源

两个核心问题导致输出异常:

  • the_terms()是WordPress的输出型函数,执行时会直接打印内容到页面,不会把分类结果作为返回值返回。你把它放在字符串拼接逻辑里时,函数会在拼接流程中提前输出作者链接,根本不会嵌入你前后写的<td>标签内,最终对应位置的td自然是空的。
  • 就算替换成返回值型的相关函数,你原本设置的逗号分隔符也只会把所有作者放在同一个td中,无法实现每个作者单独占一个单元格的需求。
可行实现方案

不要直接用the_terms()拼接,改用get_the_terms()先获取当前文章绑定的所有作者分类对象,循环遍历后自行拼接表格结构即可,参考代码如下:

// 获取当前文章关联的所有authors分类项
$author_terms = get_the_terms( $post->ID, 'authors' );

// 校验数据有效性,避免无分类时触发报错
if ( ! empty( $author_terms ) && ! is_wp_error( $author_terms ) ) {
    foreach ( $author_terms as $term ) {
        $term_link = get_term_link( $term );
        // 跳过无效分类项
        if ( is_wp_error( $term_link ) ) {
            continue;
        }
        // 拼接单个作者的td单元格,同时做安全转义符合WordPress开发规范
        $return .= sprintf(
            '<td><a href="%s" rel="tag">%s</a></td>',
            esc_url( $term_link ),
            esc_html( $term->name )
        );
    }
}

补充说明

  • 代码中使用了WordPress原生的esc_url()、esc_html()做输出转义,符合插件开发的安全要求,可避免XSS风险。
  • 如果需要给无关联作者的文章留空单元格占位,可以在数据校验不通过的分支下追加$return .= '<td></td>';即可。
  • WordPress模板函数有通用命名规律:the_开头的函数默认直接输出内容,需要返回值做字符串拼接时,优先查找get_开头的同功能函数即可,避免同类问题。

内容的提问来源于stack exchange,提问作者Pontus Eriksson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 03:57:37