如何扩展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
相关产品推荐
相关产品推荐

