WooCommerce订单后台:将自定义快速回复模块移至客户备注框下方求助
WooCommerce订单后台快速回复模块移至备注框下方的解决方案
问题描述
已通过代码在WooCommerce订单详情页添加自定义“快速回复”模块,功能正常,但需要将该模块移至客户备注输入框下方(如图所示),找不到对应后置钩子,寻求解决方法。
原代码:
// display the extra data in the order admin panel function kia_display_order_data_in_admin( $order ){ ?> <div class="order_data_column"> <h4><?php _e( 'Fast responses' ); ?></h4> <?php echo '<p><strong>' . __( '2 parcel shipment' ) . ':</strong>' . get_post_meta( $order->id, '_some_field', true ) . '</p>'; echo '<p><strong>' . __( 'You incorrect address' ) . ':</strong>' . get_post_meta( $order->id, '_another_field', true ) . '</p>'; echo '<p><strong>' . __( 'Your payment failed' ) . ':</strong>' . get_post_meta( $order->id, '_another_field', true ) . '</p>'; ?> </div> <?php } add_action( 'woocommerce_admin_order_data_after_order_details', 'kia_display_order_data_in_admin' );

解决方案
使用WooCommerce官方提供的woocommerce_admin_order_data_after_order_notes钩子,该钩子会在订单备注框的下方输出内容,完全匹配需求。同时优化代码兼容性与样式一致性:
修改后的代码
// 后台订单页显示快速回复模板 function kia_display_order_data_in_admin( $order ){ ?> <div class="order_data_column wc-metaboxes-wrapper"> <h4><?php _e( '快速回复模板' ); ?></h4> <div class="inside"> <p><strong><?php _e( '分两个包裹发货' ); ?>:</strong> <?php echo get_post_meta( $order->get_id(), '_some_field', true ); ?></p> <p><strong><?php _e( '您的地址有误' ); ?>:</strong> <?php echo get_post_meta( $order->get_id(), '_another_field', true ); ?></p> <p><strong><?php _e( '您的支付失败' ); ?>:</strong> <?php echo get_post_meta( $order->get_id(), '_another_field', true ); ?></p> </div> </div> <?php } // 挂载到订单备注框下方的钩子 add_action( 'woocommerce_admin_order_data_after_order_notes', 'kia_display_order_data_in_admin' );
关键说明
- 钩子替换:将原有的
woocommerce_admin_order_data_after_order_details替换为woocommerce_admin_order_data_after_order_notes,即可让模块显示在备注框下方。 - 兼容性优化:把
$order->id替换为$order->get_id(),这是WooCommerce 3.0及以上版本的标准调用方式,避免版本兼容问题。 - 样式统一:添加
wc-metaboxes-wrapper和inside类,让快速回复模块的结构与备注框一致,视觉风格更协调。
内容的提问来源于stack exchange,提问作者Boggie
相关产品推荐
相关产品推荐

