You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 18:05:19