将自定义列添加到启用了 HPOS 的 WooCommerce 管理订单页面

问题描述 投票:0回答:1

我想在我的 WooCommerce 管理订单页面中有一个自定义列。 这是关于谁创建了订单(实际上我想要作者姓名)。使用 WooCommerce 中的 HPOS,我无法使用正常代码。因为 woocommerce 的表格已经发生了变化。

function add_wc_order_list_custom_column( $columns ) {
    $new_columns = array();

    foreach ( $columns as $column_name => $column_info ) {
        $new_columns[ $column_name ] = $column_info;

        if ( 'order_status' === $column_name ) {
            $new_columns['custom_order_list_action'] = 'Custom Column';
        }
    }

    return $new_columns;
}

function display_wc_order_list_custom_column_content( $column, $order ) {
    if ( $column == 'custom_order_list_action' ) {
        $author_id = $order->get_customer_id();
        $author = get_userdata( $author_id );
        echo $author ? $author->display_name : 'Unknown Author';
    }
}

感谢您的帮助。 。 .

我已经从Ai、论坛等尝试了很多方法,我希望程序员能帮助我解决这个问题。

php wordpress woocommerce hook-woocommerce orders
1个回答
0
投票

WooCommerce 订单创建主要有 3 种情况(与订单作者相关):

1)。通过结帐下的订单:

通过结帐下订单时,订单始终由客户为宾客和注册用户创建(账单上的名字和姓氏)。

您已经通过管理订单列表的第一列获得此信息

Admin orders list

您可以在“Origin”栏看到“Direct”。

请注意,当 HPOS 未启用或启用兼容模式时,“post_author”设置为

0

2)。通过管理员手动创建的订单:

在这种情况下,作者是创建订单的授权用户(管理员或商店经理)。

在管理订单列表中,在“Origin”列中,您将看到“Web admin”。

如果启用了 HPOS 没有兼容模式,则作者信息只能通过订单管理注释获得部分信息,您可以在其中以某种方式获取作者显示名称和电子邮件(但它不可靠)

如果启用了 HPOS 兼容模式,您可以从

WC_Order
对象获取作者 ID,例如:

$author_id = get_post_field( 'post_author', $order->get_id() );

3)。以编程方式创建的订单:

这里,只有通过代码设置,来源和作者信息才可用。


您可以通过

WC_Order
方法使用
get_created_via()
属性“created_via”来查看订单是如何创建的。已知的显示值为:

  • “结账”通过结账 (1) 下的订单,
  • “admin”用于通过后端手动创建的订单 (2)。

以编程方式创建订单时 (3),您可以使用

set_created_via()
方法定义“created_via”。

© www.soinside.com 2019 - 2024. All rights reserved.