将订单元数据添加到 WooCommerce 管理员订单概述

Add order metadata to WooCommerce admin order overview

我正在为 WooCommerce 开发一个插件。我想覆盖管理员的订单详细信息模板。我已经在 https://www.skyverge.com/blog/override-woocommerce-template-file-within-a-plugin/ 上阅读过,但我仍然不明白如何覆盖管理员的订单详细信息模板。以下是我的代码:

 if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
 if ( ! class_exists( 'Test' ) ) {
   load_plugin_textdomain( 'test', false, dirname( plugin_basename( __FILE__ ) ) . '/' );
}
}
class Test {
public function __construct() {
add_action( 'init', array( $this, 'include_template_functions' ), 20 );
add_action( 'woocommerce_init', array( $this, 'woocommerce_loaded' ) );
add_action( 'plugins_loaded', array( $this, 'plugins_loaded' ) );
do_action( 'woocommerce_admin_order_data_after_order_details', 'hello' );
}

public function hello() {
echo "order detail template has loaded";
}

public function include_template_functions() {
include( 'woocommerce-template.php' );
echo "template has loaded";
 }

  public function woocommerce_loaded() {
  }

public function plugins_loaded() {
 }
 }

$GLOBALS['wc_acme'] = new Test();

它没有调用与 woocommerce_admin_order_data_after_order_details 关联的挂钩。

任何人都可以建议或分享一些通过插件编辑订单详细信息模板的示例。请注意,我指的是管理员内部的订单详细信息模板,管理员可以在其中查看列表中任何订单的详细信息。

根据我在 customizing WooCommerce checkout fields 上的教程,您可以通过以下方式在“订单详细信息”元数据框中显示一些额外的订单元数据:

// 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( 'Extra Details' ); ?></h4>
        <?php 
            echo '<p><strong>' . __( 'Some field' ) . ':</strong>' . get_post_meta( $order->id, '_some_field', true ) . '</p>';
            echo '<p><strong>' . __( 'Another field' ) . ':</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' );

这假设您已在结帐时收集数据并将数据保存为相关 $order 的 post 元数据。

您可以使用 woocommerce_admin_order_data_after_billing_address 操作:

function order_phone_backend($order){
    echo "<p><strong>Billing phone 2:</strong> " . get_post_meta( $order->id, '_billing_phone_new', true ) . "</p><br>";
} 
add_action( 'woocommerce_admin_order_data_after_billing_address','order_phone_backend', 10, 1 );