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

如何扩展WooCommerce代码向购物车传递多个自定义字段(如enrolmentId)

扩展WooCommerce购物车项数据添加额外字段

你已经有了不错的基础,要添加enrolmentId这个额外字段其实和你实现enrolmentName的逻辑几乎一致,只需要重复类似的判断和数组追加步骤就行。我给你整理了修改后的完整代码,顺便拆解下关键细节:

修改后的完整代码

function display_enrolment_text_cart( $item_data, $cart_item ) {
    // 处理 enrolmentName 字段
    if ( ! empty( $cart_item['enrolmentName'] ) ) {
        $item_data[] = array(
            'key'     => __( 'Enrolment', 'test' ),
            'value'   => wc_clean( $cart_item['enrolmentName'] ),
            'display' => '',
        );
    }

    // 新增处理 enrolmentId 字段
    if ( ! empty( $cart_item['enrolmentId'] ) ) {
        $item_data[] = array(
            'key'     => __( 'Enrolment ID', 'test' ),
            'value'   => wc_clean( $cart_item['enrolmentId'] ),
            'display' => '',
        );
    }

    return $item_data;
}
add_filter( 'woocommerce_get_item_data', 'display_enrolment_text_cart', 10, 2 );

关键说明

  • 我把两个字段的判断分开编写,逻辑更清晰,哪怕其中一个字段为空,另一个也能正常显示
  • 务必确认$cart_item['enrolmentId']已经被正确存入购物车项(比如你通过woocommerce_add_cart_item_data这类钩子提前把ID写入),否则判断会跳过,字段不会显示
  • wc_clean()是WooCommerce自带的安全清理函数,能避免XSS等安全风险,这个好习惯建议保持
  • 要是想让显示更直观,可以把第一个字段的key改成__( 'Enrolment Name', 'test' ),和Enrolment ID对应起来,用户看得更明白

这样修改后,只要你的购物车项里存在enrolmentId数据,它就会和enrolmentName一起显示在购物车的项详情中了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:37:11