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

如何编辑WooCommerce中woocommerce_cart_collaterals钩子输出的HTML内容

关于WooCommerce woocommerce_cart_collaterals 钩子的修改指南

1. 钩子的引用来源

woocommerce_cart_collaterals是WooCommerce核心自带的购物车页面专用钩子,你提供的代码注释中已经标注了默认挂载的两个回调函数:

  • woocommerce_cross_sell_display:负责输出购物车页的交叉销售商品区块
  • woocommerce_cart_totals:优先级为10,负责输出购物车小计、运费、总计等结算金额区块

两个回调对应的源码位置在WooCommerce插件目录的includes/wc-cart-functions.php文件中,关联的默认模板文件分别为:

  • 交叉销售模块:templates/cart/cross-sells.php
  • 购物车金额模块:templates/cart/cart-totals.php

注意:所有自定义修改建议在子主题下操作,避免主题/插件升级后自定义内容被覆盖。

2. 获取并编辑该区域HTML的常用方法

方法1:覆写WooCommerce模板文件(最推荐,适合大范围修改结构)

WooCommerce自带模板覆写机制,修改不会影响核心源码,升级也不会丢失:

  • 进入站点目录wp-content/plugins/woocommerce/templates/cart/,找到需要修改的对应模板文件(比如cart-totals.php或cross-sells.php)
  • 将目标模板文件复制到当前使用主题的woocommerce/cart/目录下(如果没有对应目录可以手动新建)
  • 直接编辑复制后的文件内的HTML和PHP逻辑即可,WooCommerce会优先加载主题内的覆写模板

方法2:替换默认回调函数(适合完全重构内容的场景)

在主题的functions.php文件中添加如下代码,移除默认挂载的函数后替换为自定义输出:

// 移除默认挂载的回调
remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cross_sell_display' );
remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cart_totals', 10 );

// 挂载自定义输出函数
add_action( 'woocommerce_cart_collaterals', 'custom_cart_collaterals_output', 10 );
function custom_cart_collaterals_output() {
    // 在此处编写自定义HTML和逻辑代码即可
    echo '<div class="custom-cart-total">自定义购物车区块内容</div>';
    // 也可以按需调用原生模板,比如 wc_get_template( 'cart/cart-totals.php' );
}

方法3:在原有内容前后插入自定义内容(适合小范围调整)

如果不需要改动原有输出结构,只需要在默认内容前后加自定义HTML,可以通过调整回调优先级实现:

// 优先级小于10,内容会插入到默认区块之前
add_action( 'woocommerce_cart_collaterals', 'custom_content_before_collaterals', 5 );
function custom_content_before_collaterals() {
    echo '<div class="before-content">插入到购物车金额上方的自定义内容</div>';
}

// 优先级大于10,内容会插入到默认区块之后
add_action( 'woocommerce_cart_collaterals', 'custom_content_after_collaterals', 15 );
function custom_content_after_collaterals() {
    echo '<div class="after-content">插入到购物车金额下方的自定义内容</div>';
}

3. 直接获取该区域完整HTML的方法

如果需要临时捕获输出的HTML字符串做二次处理,可以借助PHP输出缓冲区实现:

ob_start();
do_action( 'woocommerce_cart_collaterals' );
$cart_collaterals_html = ob_get_clean();
// 变量$cart_collaterals_html就是该区域的完整HTML代码,可以做字符串替换等处理后再输出
echo $cart_collaterals_html;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 09:27:03