如何在wc_add_to_cart_message_html中显示产品重量、缩略图及meta_key
问题原因
你代码出现严重错误的核心原因是:WooCommerce不存在get_the_weight()这个全局函数,获取产品所有属性的前提是先拿到合法的产品实例对象。
修复后的完整实现代码
add_filter( 'wc_add_to_cart_message_html', 'my_custom_add_to_cart_message', 10, 3 ); function my_custom_add_to_cart_message( $message, $products, $show_qty ) { // 取最新添加的产品ID $product_id = key($products); // 安全获取产品实例 $product = wc_get_product( $product_id ); if( !$product ) return $message; // 1.获取产品重量+单位 $weight = $product->get_weight() ? $product->get_weight() . ' ' . get_option( 'woocommerce_weight_unit' ) : '无重量信息'; // 2.获取产品缩略图(尺寸可自定义,这里设置为60*60像素) $thumbnail = $product->get_image( array(60, 60), array( 'style' => 'margin-right:10px; vertical-align:middle;' ) ); // 3.获取自定义meta字段值,替换为你实际的meta_key $custom_meta_val = $product->get_meta( '你的自定义meta_key' ) ? : '无对应值'; // 组装提示消息 $message = sprintf( '<span style="font-size: 12px;">%s %s 已添加到您的购物车</span><br> <span style="font-size: 12px;">重量:%s</span><br> <span style="font-size: 12px;">自定义字段值:%s</span> <a href="%s" class="w-100 add-to-card-pills btn mt-3">查看购物车</a>', $thumbnail, esc_html( $product->get_name() ), esc_html( $weight ), esc_html( $custom_meta_val ), esc_url( wc_get_cart_url() ) // 动态获取购物车链接,比写死域名更兼容 ); return $message; }
代码说明
- 替换了旧版已废弃的
wc_add_to_cart_message钩子,改用高版本WooCommerce兼容的wc_add_to_cart_message_html钩子,适配所有主流版本 - 所有输出内容都做了安全转义,避免XSS漏洞
- 购物车链接用
wc_get_cart_url()动态获取,不需要手动写死域名,站点换域名也不会失效 - 如果不需要展示某个字段,直接删掉对应占位符和参数即可
内容的提问来源于stack exchange,提问作者Sallar Rabiei
相关产品推荐
相关产品推荐

