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

如何在WooCommerce 3中判断购物车是否非空?

如何判断WooCommerce购物车是否非空?

我来帮你分析下之前代码的问题,以及正确的实现方式:

你之前尝试的代码问题

  1. 第一种写法:
add_action( 'wp_footer', 'redirecionar' ); 
function redirecionar(){ 
    global $woocommerce; 
    if ( is_page('carrinho-de-compras') and !sizeof($woocommerce->cart->cart_contents) ) { 
        // do something 
    } 
}
  • 首先,$woocommerce->cart->cart_contents这种调用方式在新版本WooCommerce中已不再是官方推荐写法,更建议使用WC()->cart全局对象来操作购物车。
  • 其次,你的条件!sizeof($woocommerce->cart->cart_contents)是判断购物车为空的场景,如果目标是判断购物车非空,逻辑需要反过来(比如sizeof($woocommerce->cart->cart_contents) > 0)。
  1. 第二种写法:
add_action( 'wp_footer', 'vazio' ); 
function vazio() { 
    if ( ! WC()->cart->get_cart_contents_count() == 0 ) { 
        // do something 
    } 
}

这里的核心问题是运算符优先级错误:!会先对WC()->cart->get_cart_contents_count()的结果取反,再和0比较,导致逻辑完全偏离预期。正确的写法应该是WC()->cart->get_cart_contents_count() != 0,或者用括号明确优先级:! (WC()->cart->get_cart_contents_count() == 0)。

正确的解决方案

WooCommerce官方提供了专门的is_empty()方法来判断购物车状态,这个方法兼容性强、逻辑清晰,直接通过! WC()->cart->is_empty()就能准确判断购物车非空的情况。

完整的正确代码如下:

<?php 
add_action( 'wp_footer', 'vazio' ); 
function vazio() { 
    if ( ! WC()->cart->is_empty() ) { 
?> 
    <div style="width: 20%;" class="footer-section <?php echo esc_html($woo);?>"> 
        <a href="<?php echo 'https://my_web_page.pt/finalizar-compra';?>" title="Finalizar Compra"><i class="fa fa-credit-card"></i></a> 
    </div> 
<?php 
    } 
} 
?>

这种写法既避免了手动计算的误差,也能适配不同版本的WooCommerce,是官方推荐的实现方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:52:31