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

时间:2015-04-13 09:44:06

标签: wordpress woocommerce

enter image description here

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

 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相关联的挂钩。

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

2 个答案:

答案 0 :(得分:10)

在我的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的后置元数据。

答案 1 :(得分:0)

您可以使用 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 );