WordPress WooCommerce:在对应分类页显示全部库存/缺货商品
解决方案:分类页面显示全部库存状态的商品
没问题,我刚好有合适的方案帮你解决这个需求~你可以把下面这段代码添加到主题的functions.php文件中,或者更推荐用自定义代码插件(比如Code Snippets)来添加,这样更安全,也不会因为主题更新丢失代码:
add_action( 'woocommerce_product_query', 'show_out_of_stock_products_in_category' ); function show_out_of_stock_products_in_category( $query ) { // 仅在前端的产品分类页面生效,排除后台查询 if ( is_product_category() && ! is_admin() ) { // 获取当前查询的meta条件 $meta_query = $query->get( 'meta_query', array() ); // 移除WooCommerce默认的「排除缺货商品」的过滤条件 $meta_query = array_filter( $meta_query, function( $condition ) { return ! ( isset( $condition['key'] ) && $condition['key'] === '_stock_status' && isset( $condition['value'] ) && $condition['value'] === 'outofstock' && isset( $condition['compare'] ) && $condition['compare'] === 'NOT IN' ); } ); // 添加新的条件:同时包含有货和缺货的商品 $meta_query[] = array( 'key' => '_stock_status', 'value' => array( 'instock', 'outofstock' ), 'compare' => 'IN' ); // 更新查询的meta条件 $query->set( 'meta_query', $meta_query ); } }
代码说明:
- 这段代码通过
woocommerce_product_query钩子拦截WooCommerce的产品查询逻辑 - 当检测到当前是前端的产品分类页面时,会修改查询规则:移除默认的「排除缺货商品」的过滤,替换为同时包含「有货(instock)」和「缺货(outofstock)」的商品
- 商店主页面的原有设置不会被影响,依然会隐藏缺货商品
注意事项:
- 如果你直接修改主题的
functions.php,记得先备份文件,避免出错导致网站无法访问 - 添加代码后建议清空网站缓存和浏览器缓存,确保修改立即生效
- 如果你的网站有自定义的产品筛选或查询逻辑,可能需要根据实际情况微调这段代码,但绝大多数默认WooCommerce场景下都能正常工作
内容的提问来源于stack exchange,提问作者Hunter Nott
相关产品推荐
相关产品推荐

