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

get_post_meta在WooCommerce购物车页面不显示的问题修复

WooCommerce购物车自定义字段不显示修复

原代码无法正常输出自定义字段核心是ID获取方式错误,以下是可直接使用的修正版本:

原代码问题点

  • 直接调用$product->ID获取产品ID不符合WooCommerce开发规范,购物车内存在可变产品变体时大概率拿不到正确的ID,导致get_post_meta读不到对应字段值
  • 已绑定woocommerce_before_cart_table钩子(该钩子仅在购物车页触发),循环内重复判断is_cart()属于冗余逻辑
  • 没有做空值判断,未设置自定义字段的商品会输出多余空标签打乱布局
  • 输出自定义字段未做转义,存在安全隐患和布局错乱风险

修正后完整代码

function display_fork_lift_msg_single_product() {
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        $product = $cart_item['data'];         
        if ( empty( $product ) ) continue;

        // 兼容可变产品变体,优先读取父产品存储的自定义字段
        $target_id = $product->is_type('variation') ? $product->get_parent_id() : $product->get_id();
        $fork_lift = get_post_meta( $target_id, '_shipping_notes', true );
                               
        if ( ! empty( $fork_lift ) ) {
            echo $product->get_image() . '<br>' . esc_html( $fork_lift );
        }
    }
}
add_action('woocommerce_before_cart_table', 'display_fork_lift_msg_single_product', 10);

代码说明

  • 用WooCommerce官方要求的get_id()方法获取产品ID,从根源解决ID读错问题
  • 自动兼容可变商品场景:如果购物车内是可变产品的规格变体,会自动读取父商品下配置的_shipping_notes字段,不需要给每个变体单独配置字段
  • 只有当商品配置了配送备注字段时才输出对应商品图和备注,无备注的商品不会输出多余内容
  • 对备注内容做HTML转义,避免特殊符号破坏页面结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 04:45:48