如何在WooCommerce中实现类似文章标签的带链接产品标签列表?
WooCommerce 带链接的产品标签列表实现方案
嘿,这事儿其实很简单,你只需要把原来针对文章标签的代码,换成WooCommerce专属的产品标签分类法就行!下面是直接可用的代码:
<?php // 获取所有WooCommerce产品标签,排除空标签 $product_tags = get_terms( array( 'taxonomy' => 'product_tag', 'hide_empty' => true, // 可选:设为false会显示没有关联产品的标签 ) ); if ( ! empty( $product_tags ) && ! is_wp_error( $product_tags ) ) : ?> <div class="product-tags"> <?php foreach ( $product_tags as $tag ) : ?> <a href="<?php echo esc_url( get_term_link( $tag ) ); ?>" rel="tag"> <?php echo esc_html( $tag->name ); ?> </a> <?php // 可选:添加标签之间的分隔符,比如逗号 // if ( next( $product_tags ) ) echo ', '; ?> <?php endforeach; ?> </div> <?php endif; ?>
关键细节解释:
get_terms()替代get_tags():WooCommerce的产品标签是一个名为product_tag的自定义分类法,get_tags()只针对默认的文章标签,所以我们用get_terms()并指定taxonomy参数来获取产品标签。get_term_link()替代get_tag_link():get_tag_link()是专门给文章标签用的,通用的分类法链接获取要用get_term_link(),它能自动识别产品标签的正确URL。- 安全处理:用
esc_url()和esc_html()分别处理链接和标签名称,避免XSS安全问题,这是WordPress开发的最佳实践哦。 - 空标签判断:通过
! empty( $product_tags ) && ! is_wp_error( $product_tags )来处理没有标签或者获取失败的情况,避免页面报错。
你可以根据自己的需求调整参数:比如把 hide_empty 改成 false 显示所有标签,或者添加 orderby 和 order 参数来控制标签的排序(比如 'orderby' => 'name', 'order' => 'ASC')。
内容的提问来源于stack exchange,提问作者Kendall
相关产品推荐
相关产品推荐

