讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在WooCommerce商店页面排除特定产品分类

雨强君_9964

雨强君_9964

发布时间:2025-11-03 12:15:41

|

324人浏览过

|

来源于php中文网

原创

如何在woocommerce商店页面排除特定产品分类

本教程详细介绍了如何通过自定义代码片段,将特定产品分类从WooCommerce商店主页中排除。文章重点利用`woocommerce_product_query`动作钩子来修改产品查询,确保默认的商店页面循环能够正确过滤掉不希望展示的分类,并提供了详细的代码示例、使用方法及注意事项,帮助开发者精确控制产品展示。

理解WooCommerce产品分类排除的需求

在运营WooCommerce商店时,有时需要将某些特定的产品分类从主商店页面中隐藏,例如“缺货商品”、“内部测试商品”或“产品目录”等不适合直接向客户展示的分类。虽然WordPress提供了pre_get_posts钩子来修改主查询,但对于WooCommerce的默认商店页面循环,直接使用该钩子或针对短代码的过滤器可能无法达到预期效果。这是因为WooCommerce有其特定的查询处理机制。

核心解决方案:利用 woocommerce_product_query 钩子

为了可靠地从WooCommerce商店页面排除特定产品分类,最有效的方法是使用woocommerce_product_query动作钩子。这个钩子在WooCommerce构建产品查询时触发,允许我们直接修改查询参数,从而实现分类的排除。

page-agent 浏览器控制(CDP)
page-agent 浏览器控制(CDP)

使用 page-agent CLI(CDP)控制浏览器;CLI只能通过 GitHub Release 的 .tgz 安装,npm 官方包暂未发布。

下载

以下是实现此功能的代码片段:

/**
 * 从WooCommerce商店页面排除指定产品分类。
 *
 * 此函数通过修改产品查询的tax_query参数,
 * 确保指定分类的产品不会在商店主页或搜索结果中显示。
 *
 * @param WP_Query $query 当前的WP_Query对象。
 */
function custom_exclude_product_category_from_shop( $query ) {
    // 确保我们只修改主查询,并且不是在管理后台或搜索页面。
    // 如果需要排除搜索结果中的分类,请移除 is_search() 条件。
    if ( is_admin() || is_search() ) {
        return;
    }

    // 获取当前的分类查询参数(如果存在)
    $tax_query = (array) $query->get( 'tax_query' );

    // 添加新的分类排除条件
    $tax_query[] = array(
        'taxonomy' => 'product_cat', // 指定分类法为产品分类
        'field'    => 'slug',        // 使用分类的slug进行匹配
        'terms'    => array( 'product-catalogue' ), // 需要排除的分类slug数组
        'operator' => 'NOT IN'       // 操作符,表示不包含在指定term中
    );

    // 将修改后的分类查询参数设置回查询对象
    $query->set( 'tax_query', $tax_query );
}
add_action( 'woocommerce_product_query', 'custom_exclude_product_category_from_shop' );

代码解析:

  1. custom_exclude_product_category_from_shop( $query ) 函数: 这是我们的回调函数,它接收一个WP_Query对象作为参数,该对象代表了当前的产品查询。
  2. 条件判断: if ( is_admin() || is_search() ) { return; } 这一行是可选的,用于防止在WordPress后台或搜索结果页意外修改查询。如果你的需求是也在搜索结果中排除该分类,可以移除 is_search() 条件。
  3. 获取现有 tax_query: $tax_query = (array) $query->get( 'tax_query' ); 这行代码获取了当前查询中已有的分类查询参数。将其转换为数组形式是为了方便添加新的条件。
  4. 添加排除条件:
    • 'taxonomy' => 'product_cat':指定我们要操作的是产品分类(product_cat是WooCommerce产品分类的内部名称)。
    • 'field' => 'slug':指定我们通过分类的slug(别名)来识别分类。你也可以使用'id'并提供分类ID数组。
    • 'terms' => array( 'product-catalogue' ):这是最关键的部分。你需要将'product-catalogue'替换为你希望排除的分类的实际slug。如果你需要排除多个分类,可以在数组中添加更多slug,例如 array( 'slug-1', 'slug-2' )。
    • 'operator' => 'NOT IN':这个操作符告诉WordPress,我们希望查询结果中不包含terms数组中指定的分类。
  5. 设置 tax_query: $query->set( 'tax_query', $tax_query ); 将修改后的tax_query重新设置回WP_Query对象,从而影响最终的产品查询结果。
  6. add_action( 'woocommerce_product_query', 'custom_exclude_product_category_from_shop' );: 这行代码将我们的函数挂载到woocommerce_product_query动作钩子上,确保在WooCommerce构建产品查询时执行我们的代码。

如何实施

  1. 找到分类 Slug:
    • 登录到WordPress后台。
    • 导航到 产品 > 分类。
    • 找到你想要排除的分类,其“别名”(Slug)列就是你需要的值。例如,如果分类名称是“Z_PRODUCT CATALOGUE”,其Slug可能是product-catalogue。请务必核对准确。
  2. 将代码添加到你的网站:
    • 推荐方法: 将上述代码添加到你的子主题(Child Theme)的functions.php文件中。这样做可以确保在主题更新时你的修改不会丢失。
    • 替代方法: 如果你没有子主题,可以创建一个自定义插件来管理这些代码片段。这比直接修改父主题的functions.php更安全。

注意事项与故障排除

  • 分类 Slug 的准确性: 确保你在代码中使用的分类slug与你WooCommerce后台的实际分类slug完全匹配。一个小的拼写错误都可能导致代码无效。
  • 缓存问题: 在添加或修改代码后,如果你的网站使用了缓存插件(如WP Super Cache, W3 Total Cache, LiteSpeed Cache等),请务必清除所有网站缓存。浏览器缓存也可能需要清除。
  • 钩子的选择: 像pre_get_posts这样的通用WordPress钩子,在某些情况下可能被WooCommerce的内部逻辑覆盖或以不同的方式处理。woocommerce_product_query是专门为WooCommerce产品查询设计的,因此在修改产品列表方面更为可靠。
  • 多分类排除: 如果需要排除多个分类,只需在'terms'数组中添加它们的slug即可:'terms' => array( 'slug-a', 'slug-b', 'slug-c' )。
  • 代码位置: 永远不要直接修改WooCommerce插件的核心文件,因为插件更新会覆盖你的修改。使用子主题的functions.php或自定义插件是最佳实践。

总结

通过利用woocommerce_product_query动作钩子,我们可以精确地控制哪些产品分类会显示在WooCommerce商店主页上。这个方法比尝试修改短代码或通用查询钩子更具针对性和可靠性,确保了即使在WooCommerce默认循环下也能实现所需的分类排除。遵循本教程的步骤和注意事项,你可以轻松地管理商店页面的产品展示。

热门AI工具

更多
AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
wordpress seo
wordpress seo

WordPress网站SEO优化方法有:1、选择一个SEO友好的主题,具有清晰的代码结构,快速的加载速度和响应式设计;2、使用SEO插件,优化你的标题标签,元描述,关键字,XML站点地图等;3、优化你的内容,内容是SEO优化的核心;4、优化你的网站速度;5、创建友好的URL;6、使用内部链接;7、优化图像;8、使用社交媒体;9、定期更新你的网站;10、监控和分析你的网站等等。

5375

2023.09.18

wordpress下载后怎么安装
wordpress下载后怎么安装

安装前准备:确保服务器满足要求、获取安装文件、创建数据库。上传 wordpress 文件。创建数据库和用户。运行安装程序:选择语言、输入数据库信息、网站标题和管理员信息。安装 wordpress。安装后配置:设置永久链接、安装主题、安装插件、创建内容。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

5519

2024.04.15

WordPress插件教程
WordPress插件教程

本专题整理热门WordPress插件资源,涵盖SEO优化、缓存加速、安全防护、表单管理、电商扩展等插件推荐与使用教程。

278

2026.06.16

WordPress建站教程大全
WordPress建站教程大全

本专题汇总WordPress教程相关内容,包括WordPress安装教程、建站教程、使用技巧、网站管理经验和实战案例,帮助用户快速掌握WordPress建站与运营方法。

620

2026.06.16

WordPress开发教程
WordPress开发教程

本专题提供WordPress开发技术资料,包括主题开发、插件开发、自定义功能开发、API调用及性能优化等内容。

758

2026.06.16

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

80

2026.10.10

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

40

2026.10.10

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

20

2026.10.10

C++虚函数怎么定义和调用
C++虚函数怎么定义和调用

C++虚函数是实现运行时多态的重要机制。本专题从virtual关键字的基本用法入手,介绍基类与派生类之间的函数重写、基类指针调用派生类方法,以及动态绑定的执行过程,帮助初学者掌握虚函数的核心语法。

40

2026.10.10

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
墨刀帮助中心
墨刀帮助中心

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

Apache Subversion 官方手册
Apache Subversion 官方手册

共0课时 | 0人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn