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

WordPress多分类术语拼接 末尾加and及空分类报错解决

WordPress 多分类术语拼接问题修复

问题根源

  • 原有get_the_term_list()直接返回拼接完成的HTML字符串,不同分类的术语拼接时没有分隔符,会出现人名粘连的问题
  • 用get_the_terms()获取术语数组的思路是正确的,但该函数在分类无绑定术语、查询失败时会返回false而非空数组,直接传入array_merge()就会触发参数类型报错,后续遍历逻辑也会随之失效

可直接使用的实现代码

// 分别获取三个分类的术语,做容错处理,非数组结果统一转为空数组
$taxcomposer = get_the_terms( get_the_ID(), 'composer' );
$taxcomposer = is_array($taxcomposer) ? $taxcomposer : [];

$taxarr = get_the_terms( get_the_ID(), 'arranger' );
$taxarr = is_array($taxarr) ? $taxarr : [];

$taxlyrics = get_the_terms( get_the_ID(), 'lyrics' );
$taxlyrics = is_array($taxlyrics) ? $taxlyrics : [];

// 合并所有术语数组
$all_terms = array_merge( $taxcomposer, $taxarr, $taxlyrics );
$term_links = [];

if ( !empty($all_terms) ) {
    foreach ($all_terms as $term) {
        // 生成带样式的术语链接,通过CSS实现大写,避免转义问题
        $term_url = get_term_link( $term );
        if ( !is_wp_error($term_url) ) {
            $term_links[] = '<a style="text-transform: uppercase;" href="'.esc_url( $term_url ).'">'.$term->name.'</a>';
        }
    }
}

$credits_string = '';
$link_count = count($term_links);
if ( $link_count === 1 ) {
    $credits_string = $term_links[0];
} elseif ( $link_count === 2 ) {
    $credits_string = $term_links[0] . ' and ' . $term_links[1];
} elseif ( $link_count > 2 ) {
    $last_item = array_pop($term_links);
    // 不需要牛津逗号就把下面的', and '改成' and ',即可完全匹配你给出的预期效果
    $credits_string = implode(', ', $term_links) . ' and ' . $last_item;
}

// 最终输出内容
$frontpage = '
<p style="padding-top: 9pt;text-align: center;">by</p>
<p style="padding-top: 1pt;text-align: center;">'.$credits_string.'</p>';

逻辑说明

  • 所有get_the_terms()返回值都做了类型校验,即使某个分类下完全没有术语,也不会触发类型报错
  • 额外判断了get_term_link()的返回值,避免无效术语导致的链接错误
  • 拼接逻辑适配不同数量的术语场景:
    • 1个术语:直接输出
    • 2个术语:中间用and连接,不加多余逗号
    • 3个及以上术语:前面项用逗号分隔,最后一项前加and,符合常规排版规则
  • 保留原有样式设置,大写效果通过CSS实现,比PHP层直接转字符串更灵活,也不会出现特殊字符转义问题
  • 彻底解决不同分类术语拼接时无分隔符、人名粘连的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:36:18