0

0

WooCommerce 产品标签高级用法:自定义循环与特定标签排除

聖光之護

聖光之護

发布时间:2025-10-29 12:15:05

|

373人浏览过

|

来源于php中文网

原创

WooCommerce 产品标签高级用法:自定义循环与特定标签排除

本文详细讲解如何在wordpress中为woocommerce产品创建自定义标签过滤循环。我们将利用`get_terms`函数获取所有产品标签,并通过`foreach`循环生成可点击的标签链接,从而实现产品按标签筛选的功能。此外,文章还将探讨如何从生成的标签列表中排除特定的标签,以满足更精细化的展示需求。

在WordPress中为WooCommerce产品构建一个自定义的标签过滤循环,是提升用户体验和网站导航能力的重要方式。通过这种方式,用户可以根据产品标签快速筛选商品,从而更高效地找到所需产品。本教程将指导您如何获取所有WooCommerce产品标签,构建一个可点击的标签列表,并进一步讲解如何从该列表中排除特定的标签。

获取所有 WooCommerce 产品标签

要获取WooCommerce中所有已使用的产品标签,我们应该使用WordPress的get_terms()函数。这个函数是专门用来获取分类法(taxonomy)中的术语(terms)的,而WooCommerce的产品标签(product_tag)正是WordPress分类法的一种。

以下是获取所有产品标签的基本代码:

 true // 只获取有产品关联的标签
) );

// 检查是否获取到标签
if ( ! empty( $product_tags ) && ! is_wp_error( $product_tags ) ) {
    // 标签数据已成功获取,可以在这里处理 $product_tags 数组
    // 例如,打印标签名称进行调试
    // foreach ( $product_tags as $tag ) {
    //     echo $tag->name . '
'; // } } else { echo '没有找到产品标签。'; } ?>

在上述代码中:

  • 'product_tag' 是WooCommerce产品标签的分类法名称。
  • 'hide_empty' => true 是一个重要的参数,它确保我们只获取那些至少关联了一个产品的标签,避免显示空标签。

get_terms()函数会返回一个包含WP_Term对象数组,每个对象都代表一个产品标签,其中包含term_id、name、slug等属性。

构建自定义标签过滤循环

获取到产品标签数据后,下一步是遍历这些标签,并为每个标签生成一个可点击的链接,形成一个自定义的过滤条。

 true
) );

$html = ''; // 初始化HTML字符串

if ( ! empty( $product_tags ) && ! is_wp_error( $product_tags ) ) {
    $html .= '
'; // 容器开始 foreach ( $product_tags as $tag ) { $tag_link = get_tag_link( $tag->term_id ); // 获取标签的链接 // 构建标签链接的HTML // 使用 esc_url() 确保链接安全 // 使用 esc_attr() 和 esc_html() 确保属性和内容安全 $html .= "" . esc_html( $tag->name ) . ""; } $html .= '
'; // 容器结束 } else { $html .= '

目前没有可供筛选的产品标签。

'; } echo $html; // 输出生成的HTML ?>

这段代码将生成一个包含所有产品标签链接的HTML结构。每个链接的href属性指向该标签的产品存档页,title属性提供了标签名称的提示,class属性则使用了标签的slug,方便进行CSS样式定制。

从标签循环中排除特定标签

在某些情况下,您可能希望从生成的标签列表中排除一个或多个特定的标签。例如,您可能有一个内部使用的标签,或者某个标签不适合作为用户过滤的选项。这里提供两种实现方式:

智能网站管理系统(SmartSite)2.9.1
智能网站管理系统(SmartSite)2.9.1

智能网站管理系统( SmartSite )是由仙人掌软件基于asp+access环境下开发的企业级网站管理系统。SmartSite 内置单页、新闻、产品、视频、下载四大内容模型,在很大程度上满足了更多层次用户的需求和发展需要。会员、在线招聘等功能,加强网站的互动性的同时也可为网站的发展带来一定的盈利模式。SmartSite 开发了全新的、高效的、灵活性更强的模板引擎。无限循环(循环嵌套)标签、自定

下载

方法一:使用 get_terms() 的 exclude 参数

get_terms()函数允许您通过exclude参数直接排除特定标签的ID。这是最推荐的方法,因为它在获取数据时就排除了,效率最高。

首先,您需要知道要排除标签的ID。您可以在WordPress后台的“产品” -> “标签”页面中,将鼠标悬停在标签名称上,浏览器左下角会显示链接,其中包含tag_ID=X,这里的X就是标签ID。

 true,
    'exclude'    => $exclude_tag_ids // 排除指定ID的标签
) );

$html = '';

if ( ! empty( $product_tags ) && ! is_wp_error( $product_tags ) ) {
    $html .= '
'; foreach ( $product_tags as $tag ) { $tag_link = get_tag_link( $tag->term_id ); $html .= "" . esc_html( $tag->name ) . ""; } $html .= '
'; } else { $html .= '

目前没有可供筛选的产品标签。

'; } echo $html; ?>

方法二:在 foreach 循环中进行条件判断

如果您无法或不希望在get_terms()阶段就排除标签(例如,您可能需要完整标签列表用于其他目的,只是在显示时排除),可以在foreach循环内部添加条件判断。这种方法可以基于标签ID、slug或名称进行排除。

 true
) );

// 假设要排除的标签slug是 'internal-tag' 和 'deprecated-tag'
$exclude_tag_slugs = array( 'internal-tag', 'deprecated-tag' ); 
// 或者基于ID排除:$exclude_tag_ids = array( 10, 25 );

$html = '';

if ( ! empty( $product_tags ) && ! is_wp_error( $product_tags ) ) {
    $html .= '
'; foreach ( $product_tags as $tag ) { // 基于 slug 排除 if ( in_array( $tag->slug, $exclude_tag_slugs ) ) { continue; // 跳过当前循环的剩余部分,进入下一个标签 } // 如果是基于ID排除,可以使用: // if ( in_array( $tag->term_id, $exclude_tag_ids ) ) { // continue; // } $tag_link = get_tag_link( $tag->term_id ); $html .= "" . esc_html( $tag->name ) . ""; } $html .= '
'; } else { $html .= '

目前没有可供筛选的产品标签。

'; } echo $html; ?>

这种方法提供了更大的灵活性,但如果标签数量非常大,可能会比方法一略微降低效率,因为所有标签都会先被获取。

注意事项

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2529

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1604

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1496

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

952

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1416

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1234

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1445

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1306

2023.11.13

Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

0

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

CSS教程
CSS教程

共754课时 | 19万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号