【问题标题】:Add order metadata to WooCommerce admin order overview将订单元数据添加到 WooCommerce 管理员订单概览
【发布时间】:2015-04-13 09:44:06
【问题描述】:

我正在为 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关联的钩子。

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

【问题讨论】:

  • 我不确定您指的是哪个模板。可以截图吗?如果可能,您要添加的屏幕截图是什么? Justin 的教程用于覆盖前端 WooCommerce 模板。看起来你根本没有关注它,所以我可能可以提供更多帮助来澄清一下。
  • 其实我也试过贾斯汀教程,但是没用。
  • 他的教程就其目的而言工作得很好……它覆盖了前端模板。向您发布的屏幕截图添加数据完全是另一回事。你具体想改变什么?我可以向您展示如何在上面的屏幕截图中添加额外的数据。
  • 我想为新数据添加额外的部分。实际上我在自己的服务器上有一个返回地理位置的 API,我想在订单项部分之前显示该地理位置。

标签: wordpress woocommerce


【解决方案1】:

根据我在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 的帖子元数据。

【讨论】:

  • 感谢一百万的帮助。
  • 这是一个很好的答案。我使用相同的代码来查看额外的自定义计费字段,并且钩子是“woocommerce_admin_order_data_after_billing_address”。但它只会显示 label 和 value 。但是我怎样才能编辑这个细节。
  • 什么细节?我建议你打开自己的问题。
  • 嘿,@helgatheviking 我正在尝试做同样的事情,但没有任何插件,我只有几个自定义字段,我想在管理的项目部分显示它们
  • @HabibRehman 仔细阅读了我链接到的教程。然后,如果您仍然有问题,请返回 SO 并发布一个详细的问题(一个新问题,而不是对该线程的回复),确定您正在尝试做的事情 没有 被涵盖上面的代码。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多