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

需求:开发两个带链接的WooCommerce当前产品标签/分类短代码

WooCommerce 产品标签/分类带链接短代码实现

短代码1:显示当前产品带链接的标签

功能说明:

  • 展示当前WooCommerce产品的标签
  • 每个标签为可点击的分类归档链接
  • 标签之间以逗号分隔

实现代码

add_shortcode( 'wc_product_tag_links', 'get_product_tag_links' );
function get_product_tag_links( $atts ) {
    // 短代码参数设置
    $atts = shortcode_atts( array(
        'product_id' => get_the_id(), // 默认使用当前产品ID
        'taxonomy'   => 'product_tag' // 默认产品标签分类法
    ), $atts, 'wc_product_tag_links' );

    // 获取产品关联的标签术语对象
    $terms = wp_get_post_terms( $atts['product_id'], $atts['taxonomy'] );
    
    $term_links = array();
    if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
        foreach ( $terms as $term ) {
            // 生成标签的归档链接
            $term_link = get_term_link( $term );
            if ( ! is_wp_error( $term_link ) ) {
                $term_links[] = '<a href="' . esc_url( $term_link ) . '">' . esc_html( $term->name ) . '</a>';
            }
        }
    }

    // 将链接数组用逗号分隔后返回
    return implode( ', ', $term_links );
}

短代码2:显示当前产品带链接的分类

功能说明:

  • 展示当前WooCommerce产品的分类
  • 每个分类为可点击的分类归档链接
  • 分类之间以逗号分隔

实现代码

add_shortcode( 'wc_product_category_links', 'get_product_category_links' );
function get_product_category_links( $atts ) {
    // 短代码参数设置
    $atts = shortcode_atts( array(
        'product_id' => get_the_id(), // 默认使用当前产品ID
        'taxonomy'   => 'product_cat' // 默认产品分类分类法
    ), $atts, 'wc_product_category_links' );

    // 获取产品关联的分类术语对象
    $terms = wp_get_post_terms( $atts['product_id'], $atts['taxonomy'] );
    
    $term_links = array();
    if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
        foreach ( $terms as $term ) {
            // 生成分类的归档链接
            $term_link = get_term_link( $term );
            if ( ! is_wp_error( $term_link ) ) {
                $term_links[] = '<a href="' . esc_url( $term_link ) . '">' . esc_html( $term->name ) . '</a>';
            }
        }
    }

    // 将链接数组用逗号分隔后返回
    return implode( ', ', $term_links );
}

关键修改说明

你之前的代码仅获取了标签名称(fields => 'names'),无法生成跳转链接。上述代码做了以下核心调整:

  1. 移除fields参数,获取完整的术语对象,包含术语ID、slug等关键信息
  2. 使用get_term_link()生成每个术语的归档页面链接
  3. 用<a>标签包裹术语名称,生成可点击的链接
  4. 添加esc_url()和esc_html()确保输出安全,避免XSS风险

使用方法

在产品页面编辑器或模板中直接调用短代码即可:

  • 显示标签:[wc_product_tag_links]
  • 显示分类:[wc_product_category_links]
    若需指定特定产品ID,可传入参数:[wc_product_tag_links product_id="123"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 16:34:55