如何在WooCommerce编辑订单页自定义订单号下方添加原生Order ID
在WooCommerce编辑订单页添加原生订单ID到自定义订单号下方
有两种可靠的方法可以实现这个需求,我会详细说明:
方法1:使用PHP钩子(推荐,更稳定)
这个方法直接利用WooCommerce的后台钩子,在订单标题下方插入原生订单ID,不需要额外的JS文件,实现起来更简单。
你可以把以下代码添加到你的主题functions.php文件中,或者创建一个自定义插件来添加:
add_action( 'woocommerce_admin_order_data_before_order_details', 'show_native_order_id_under_custom_order_number' ); function show_native_order_id_under_custom_order_number( $order ) { // 方式A:使用Booster提供的短码获取原生订单ID $native_order_id = do_shortcode( '[wcj_order_id]' ); // 方式B:直接通过订单对象获取(更高效,无需依赖短码) // $native_order_id = $order->get_id(); // 输出带样式的原生订单ID,你可以根据需要调整样式 echo '<p style="margin: 12px 0; font-size: 14px; color: #555;">' . __( '原生订单ID:', 'woocommerce' ) . ' <strong>' . esc_html( $native_order_id ) . '</strong></p>'; }
原理说明:
woocommerce_admin_order_data_before_order_details是WooCommerce内置的钩子,会在订单详情区域的标题(也就是你提到的<h2 class="woocommerce-order-data__heading">)之后、订单数据表格之前触发,正好符合你的位置需求。
方法2:使用后台JS脚本(精准控制位置)
如果你需要更精准地控制元素插入位置(比如直接紧跟在标题标签后面),可以用JS来实现:
- 先在主题的
functions.php中添加脚本加载代码:
add_action( 'admin_enqueue_scripts', 'load_native_order_id_script' ); function load_native_order_id_script() { // 只在订单编辑页面加载脚本,避免全局加载 global $pagenow, $post_type; if ( 'post.php' === $pagenow && 'shop_order' === $post_type ) { wp_enqueue_script( 'native-order-id-js', get_template_directory_uri() . '/js/native-order-id.js', array( 'jquery' ), '1.0', true ); // 将原生订单ID和标签传递给JS $current_order_id = get_the_ID(); wp_localize_script( 'native-order-id-js', 'OrderInfo', array( 'nativeId' => $current_order_id, 'label' => __( '原生订单ID:', 'woocommerce' ) ) ); } }
- 在主题目录下创建
js/native-order-id.js文件,添加以下内容:
jQuery(document).ready(function($) { // 定位到订单标题的h2标签 const orderTitle = $('.woocommerce-order-data__heading'); if (orderTitle.length) { // 在标题后面插入原生订单ID orderTitle.after(`<p style="margin: 10px 0; font-size: 14px;">${OrderInfo.label} <strong>${OrderInfo.nativeId}</strong></p>`); } });
注意事项:
- 如果你使用方法1,优先选择方式B(直接通过
$order->get_id()获取ID),因为它不需要执行短码,性能更优;如果Booster的短码有特殊处理逻辑,再用方式A。 - 修改主题
functions.php前,建议备份文件,或者使用子主题来添加代码,避免主题更新时丢失修改。
内容的提问来源于stack exchange,提问作者Gracie
相关产品推荐
相关产品推荐

