0

0

WooCommerce:在特定分类中显示缺货商品(覆盖全局设置)

霞舞

霞舞

发布时间:2025-11-03 11:35:39

|

186人浏览过

|

来源于php中文网

原创

WooCommerce:在特定分类中显示缺货商品(覆盖全局设置)

本教程将指导您如何在woocommerce中,即便全局设置已隐藏所有缺货商品,也能在特定的产品分类页面中例外显示这些商品。通过利用wordpress的`pre_option_woocommerce_hide_out_of_stock_items`过滤器,您可以精确控制缺货商品的可见性,实现更灵活的库存管理和商品展示策略。

在WooCommerce商店运营中,为了提升用户体验并避免用户购买无法发货的商品,我们通常会在WooCommerce的库存设置中启用“缺货商品在目录中隐藏”选项。然而,在某些特定的营销场景或业务需求下,您可能希望在某些特定的商品分类页面中,即使商品处于缺货状态,也能将其展示出来。例如,预售商品、即将补货的商品,或者作为产品系列的一部分,即使缺货也需要展示其存在。本文将详细介绍如何通过代码实现这一高级功能,覆盖全局设置,在指定分类中显示缺货商品。

理解WooCommerce的缺货商品隐藏机制

WooCommerce提供了一个全局设置,允许商店管理员选择是否在商店目录和搜索结果中隐藏缺货商品。这个设置通常位于 WooCommerce > 设置 > 商品 > 库存 选项卡中。当此选项被勾选时,所有库存为零的商品将不会出现在任何分类列表、商店页面或搜索结果中。

我们的目标是创建一个例外规则,当用户浏览到某个特定的商品分类时,即使全局设置已启用隐藏缺货商品,该分类下的缺货商品也能被正常显示。

核心解决方案:利用WordPress过滤器

WordPress和WooCommerce的强大之处在于其丰富的钩子(hooks)和过滤器(filters)机制。我们可以利用 pre_option_woocommerce_hide_out_of_stock_items 这个过滤器来拦截并修改WooCommerce在查询商品时对“是否隐藏缺货商品”这一设置的判断。

当WordPress或WooCommerce尝试获取 woocommerce_hide_out_of_stock_items 这个选项的值时,pre_option_woocommerce_hide_out_of_stock_items 过滤器会被触发。我们可以在这个过滤器中编写自定义逻辑,判断当前是否处于我们希望显示缺货商品的特定分类页面。如果是,我们就强制将该选项的值设置为“不隐藏”(即 no),从而覆盖全局设置。

代码实现

将以下代码添加到您的WordPress子主题的 functions.php 文件中,或者通过自定义插件来管理。强烈建议使用子主题或自定义插件,以避免主题更新时代码丢失。

/**
 * WooCommerce:在特定分类中显示缺货商品,覆盖全局设置
 *
 * 当浏览到指定分类时,强制显示缺货商品。
 * 替换 'specific-category' 为您希望显示缺货商品的分类别名(slug)。
 */
add_filter( 'pre_option_woocommerce_hide_out_of_stock_items', 'custom_display_out_of_stock_exception_category' );

function custom_display_out_of_stock_exception_category( $hide_out_of_stock ) {
    // 检查当前页面是否为产品分类页面,并且是指定的分类
    // 请将 'specific-category' 替换为您实际的分类别名(slug)
    if ( is_product_category( 'specific-category' ) ) {
        // 如果是指定分类,则强制设置为“不隐藏”缺货商品
        $hide_out_of_stock = 'no';
    }   
    return $hide_out_of_stock;
}

代码解析

  1. add_filter( 'pre_option_woocommerce_hide_out_of_stock_items', 'custom_display_out_of_stock_exception_category' );

    亿众购物系统
    亿众购物系统

    一套设计完善、高效的web商城解决方案,独有SQL注入防范、对非法操作者锁定IP及记录功能,完整详细的记录了非法操作情况,管理员可以随时查看网站安全日志以及解除系统自动锁定的IP等前台简介:  1)系统为会员制购物,无限会员级别。  2)会员自动升级、相应级别所享有的折扣不同。  3)产品可在缺货时自动隐藏。  4)自动统计所有分类中商品数量,并在商品分类后面显示。  5)邮件列表功能,可在线订阅

    下载
    • add_filter() 是WordPress用于挂载过滤器的函数。
    • pre_option_woocommerce_hide_out_of_stock_items 是我们关注的过滤器名称。它在WooCommerce尝试获取 woocommerce_hide_out_of_stock_items 选项的值之前被触发。
    • custom_display_out_of_stock_exception_category 是我们自定义的回调函数,用于处理过滤器的逻辑。
  2. function custom_display_out_of_stock_exception_category( $hide_out_of_stock ) { ... }

    • 这是我们的自定义函数,它接收一个参数 $hide_out_of_stock,这个参数是WooCommerce全局设置中“是否隐藏缺货商品”的当前值(yes 表示隐藏,no 表示不隐藏)。
  3. if ( is_product_category( 'specific-category' ) ) { ... }

    • is_product_category() 是WooCommerce提供的一个条件标签,用于判断当前页面是否为指定的产品分类归档页。
    • 重要提示: 请将 'specific-category' 替换为您希望显示缺货商品的实际分类别名(slug)。分类别名通常是分类名称的小写、连字符分隔版本。您可以在 商品 > 分类 页面编辑分类时找到它。
    • 如果您需要针对多个分类应用此规则,可以传递一个分类别名数组,例如:is_product_category( array( 'category-slug-1', 'category-slug-2' ) )。
  4. $hide_out_of_stock = 'no';

    • 如果当前页面是指定的分类页面,我们将 $hide_out_of_stock 的值修改为 'no'。这意味着我们告诉WooCommerce:对于这个页面,请“不要隐藏”缺货商品。
  5. return $hide_out_of_stock;

    • 最后,函数返回 $hide_out_of_stock 的值。如果当前页面不是指定分类,它将返回原始的全局设置值;如果是指定分类,它将返回我们修改后的 'no'。

注意事项

  • 分类别名(Slug): 务必使用正确的分类别名(slug),而不是分类名称或ID。别名是URL中通常显示的那部分。
  • 子主题或自定义插件: 始终将自定义代码放置在子主题的 functions.php 文件中,或创建一个专门的自定义插件。直接修改父主题文件会导致更新时代码丢失。
  • 缓存: 在应用此代码后,如果您的网站使用了页面缓存插件(如WP Super Cache, W3 Total Cache, LiteSpeed Cache等),请务必清除所有缓存,以确保更改生效。
  • 测试: 在生产环境中部署之前,务必在开发或测试环境中充分测试此功能。
  • 用户体验: 尽管您选择了显示缺货商品,但仍建议在商品详情页清晰地标注商品为“缺货”状态,并提供预购、到货通知等选项,以优化用户体验。

总结

通过利用 pre_option_woocommerce_hide_out_of_stock_items 过滤器,我们成功地为WooCommerce的缺货商品显示设置创建了一个强大的例外机制。这使得商店管理员能够更灵活地管理商品展示策略,在保持全局设置整洁的同时,也能满足特定营销和业务需求,在指定分类中展示缺货商品。掌握这种利用WordPress过滤器覆盖默认行为的技巧,对于任何WooCommerce开发者或高级用户来说都至关重要。

相关专题

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

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

2887

2023.09.01

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

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

1730

2023.10.11

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

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

1563

2023.10.11

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

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

1099

2023.10.23

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

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

1545

2023.10.23

html怎么上传
html怎么上传

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

1277

2023.11.03

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

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

1649

2023.11.09

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

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

1309

2023.11.13

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

58

2026.01.23

热门下载

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

精品课程

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

共137课时 | 9.4万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 10.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

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

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