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

如何在WooCommerce中显示产品对比列表的商品数量(WooCommerce Products Compare)

获取WooCommerce产品对比列表的商品数量

嘿,我来帮你完善这个方案!你通过读取插件Cookie的思路完全没问题,这款对比插件确实是用wc_products_compare_products这个Cookie来存储已添加对比的商品ID列表(用逗号分隔)。不过要注意处理Cookie不存在或者值为空的情况,避免出现PHP报错。

完整实现代码

下面是经过完善的代码,能安全获取并显示对比商品的实际数量:

<?php
// 检查对比商品Cookie是否存在
if (isset($_COOKIE["wc_products_compare_products"])) {
    // 将Cookie值按逗号分割为商品ID数组
    $compare_product_ids = explode(",", $_COOKIE["wc_products_compare_products"]);
    // 过滤数组中的空元素(防止Cookie末尾带逗号导致的无效值)
    $compare_product_ids = array_filter($compare_product_ids);
    // 统计有效商品数量
    $compare_count = count($compare_product_ids);
} else {
    // 没有对比商品时数量为0
    $compare_count = 0;
}

// 输出数量,可根据需求调整显示方式
echo "已添加对比商品:{$compare_count} 件";
?>

封装成可复用函数

如果需要在主题的多个地方调用,建议封装成一个函数,放在主题的functions.php里:

/**
 * 获取WooCommerce产品对比列表的商品数量
 * @return int 对比商品数量
 */
function get_woocommerce_compare_product_count() {
    if (!isset($_COOKIE["wc_products_compare_products"])) {
        return 0;
    }
    
    $compare_ids = explode(",", $_COOKIE["wc_products_compare_products"]);
    $compare_ids = array_filter($compare_ids);
    
    return count($compare_ids);
}

调用示例(比如在导航栏、对比按钮旁显示):

// 直接输出数量
echo get_woocommerce_compare_product_count();

// 或者结合文本显示
echo "<span class='compare-count'>" . get_woocommerce_compare_product_count() . "</span>";

注意事项

  • 这段代码要在前台页面使用,因为Cookie是存储在用户浏览器端的,后台管理页面可能无法访问到
  • 如果用户清除了浏览器Cookie,对比数量会重置为0,这是正常的插件行为
  • 若插件后续更新修改了Cookie名称,这个方法可能需要同步调整,但目前版本的插件都是用这个Cookie名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:51:19