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

如何在WooCommerce Bookings元数据中显示自定义结账字段值?

问题解决:WooCommerce Bookings后台无法显示结账自定义字段值

你的代码核心问题是钩子参数理解错误:woocommerce_admin_booking_data_after_booking_details传递的是WC_Booking预订对象,而非订单对象,直接调用$order->id无法正确获取订单ID,自然拿不到存在订单元数据里的comm_plat值。另外,WooCommerce 3.0+已不推荐直接访问id属性,需用get_id()方法。

以下是修正后的代码:

add_action( 'woocommerce_admin_booking_data_after_booking_details', 'wps_select_checkout_field_display_booking_order_meta' );
function wps_select_checkout_field_display_booking_order_meta( $booking ) {
    // 从预订对象获取关联的订单ID
    $order_id = $booking->get_order_id();
    
    // 验证订单是否存在
    if ( ! $order_id || ! wc_get_order( $order_id ) ) {
        echo '<p><strong>' . __( 'Communication' ) . ':</strong> ' . __( 'No associated order found' ) . '</p>';
        return;
    }
    
    // 获取订单元数据中的自定义字段值
    $comm_plat = get_post_meta( $order_id, 'comm_plat', true );
    
    // 输出字段,为空时显示提示
    $display_value = ! empty( $comm_plat ) ? $comm_plat : __( 'Not specified' );
    echo '<p><strong>' . __( 'Communication' ) . ':</strong> ' . esc_html( $display_value ) . '</p>';
}

关键修正点:

  • 接收$booking参数而非$order,通过$booking->get_order_id()获取关联订单ID
  • 增加订单存在性验证,避免报错
  • 使用esc_html()转义输出内容,提升安全性
  • 为空值添加友好提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 13:57:09