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

WooCommerce购物车为空时进度条消失但页脚图标列表也消失问题

问题分析与解决方案

你的代码问题出在:正则表达式会移除页面中所有带有elementor-widget-container类的div容器——Elementor的绝大多数组件(包括页脚图标列表)都会使用这个通用容器类,所以购物车为空时,这些组件会被一并删除。

修复方案

方案1:给进度条容器添加唯一类,精准匹配移除

  1. 在Elementor编辑器中,找到购物车进度条的Widget,进入「高级」选项,添加自定义CSS类(比如cart-progress-bar-widget)。
  2. 修改主题代码为:
function remove_elementor_widget_container_if_cart_empty() {
    // 检查WooCommerce激活状态、当前页面是否为购物车、购物车是否为空
    if ( class_exists('WooCommerce') && is_cart() && WC()->cart->is_empty() ) {
        add_filter('the_content', 'remove_cart_progress_bar_container');
    }
}

function remove_cart_progress_bar_container($content) {
    // 仅移除包含自定义类的进度条容器
    $content = preg_replace('/<div class="elementor-widget-container">.*?<div class="cart-progress-bar-widget".*?<\/div>.*?<\/div>/s', '', $content);
    return $content;
}

add_action('wp', 'remove_elementor_widget_container_if_cart_empty');

方案2:用Elementor内置条件显示(推荐,无需代码)

直接在进度条Widget的「高级」→「条件」设置中,添加规则:

  • 条件:购物车内容 → 不为空
    这样购物车为空时,进度条自动隐藏,不会影响其他组件。

方案3:匹配Widget的唯一ID移除

每个Elementor Widget都有唯一ID(比如elementor-widget-123),你可以在页面源码中找到进度条Widget的ID,然后修改正则:

function remove_cart_progress_bar_container($content) {
    // 替换为你的进度条Widget实际ID
    $content = preg_replace('/<div id="elementor-widget-123" class="elementor-widget.*?<div class="elementor-widget-container">.*?<\/div>.*?<\/div>/s', '', $content);
    return $content;
}

内容的提问来源于stack exchange,提问作者Max Benen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 05:53:23