本文旨在提供一种通过 functions.php 文件修改 WooCommerce 设置,从而隐藏缺货的简单产品和整个可变产品的方法。通过添加自定义代码片段,可以确保仅显示有库存的产品,从而改善用户体验,避免因缺货产品而造成的困扰。该方法适用于需要隐藏整个产品(包括简单产品和所有变体均缺货的可变产品)的场景。
在 WooCommerce 商店中,默认情况下,即使产品缺货,仍然会在产品目录中显示。这可能会导致用户体验不佳,因为用户可能会点击一个实际上无法购买的产品。本文将介绍如何使用 functions.php 文件,通过添加自定义代码来隐藏缺货的简单产品和整个可变产品(即所有变体都缺货的可变产品)。
实现方法
以下代码片段可以直接添加到您的 WordPress 主题的 functions.php 文件中。请注意,直接修改主题文件存在风险,建议使用子主题或代码片段插件来添加代码,以避免主题更新导致代码丢失。
add_filter( 'woocommerce_product_query_meta_query', 'shop_only_instock_products', 10, 2 ); function shop_only_instock_products( $meta_query, $query ) { // Only on shop archive pages //if( is_admin() || is_search() || ! is_shop() ) return $meta_query; $meta_query[] = array( 'key' => '_stock_status', 'value' => 'outofstock', 'compare' => '!=' ); return $meta_query; }
代码解释
- add_filter( ‘woocommerce_product_query_meta_query’, ‘shop_only_instock_products’, 10, 2 );:此行代码将自定义函数 shop_only_instock_products 挂钩到 woocommerce_product_query_meta_query 过滤器。该过滤器允许修改用于查询产品的元查询。
- function shop_only_instock_products( $meta_query, $query ) { … }:此函数定义了用于修改元查询的逻辑。
- $meta_query[] = array( … );:此行代码向元查询添加了一个新的条件。
- ‘key’ => ‘_stock_status’:指定要查询的元键为 _stock_status,它存储产品的库存状态。
- ‘value’ => ‘outofstock’:指定要排除的库存状态为 outofstock。
- ‘compare’ => ‘!=’:指定比较运算符为 !=(不等于)。这意味着查询将排除所有 _stock_status 元键值为 outofstock 的产品。
- return $meta_query;:此行代码返回修改后的元查询。
注意事项
- 备份: 在修改 functions.php 文件之前,务必备份您的主题文件。
- 子主题: 建议使用子主题来添加自定义代码,以避免主题更新导致代码丢失。
- 代码片段插件: 您也可以使用代码片段插件来添加代码,这可以更方便地管理和禁用自定义代码。
- 测试: 在生产环境中部署之前,请在测试环境中彻底测试代码。
- 性能: 某些复杂的过滤条件可能会影响商店的性能。如果遇到性能问题,请考虑优化代码或使用缓存插件。
- 选择性应用: 代码中注释掉的 if 语句 (//if( is_admin() || is_search() || ! is_shop() ) return $meta_query;) 可以用来限制此过滤器仅应用于商店页面。您可以根据需要取消注释并修改这些条件。例如,如果您只想在商店页面上隐藏缺货产品,但在搜索结果中仍然显示它们,则可以取消注释并修改此语句。
总结
通过将上述代码添加到您的 functions.php 文件中,您可以有效地隐藏 WooCommerce 商店中缺货的简单产品和整个可变产品。这将改善用户体验,并确保用户只看到可以购买的产品。请记住,在修改代码之前备份您的文件,并在生产环境中部署之前进行彻底测试。
评论(已关闭)
评论已关闭