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

