使用 HPOS 在 WooCommerce 订单列表页面中显示订单项目详细信息

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

启用高性能订单存储 (HPOS) 时如何在管理订单列表上显示订单项目详细信息,因为经典的遗留方法代码不再适用:

add_action( 'manage_shop_order_posts_custom_column' , 'custom_orders_list_column_content', 20, 2 );
function custom_orders_list_column_content( $column, $post_id ) {
    global $the_order, $post;

    if ( 'order_status' === $column ) {
        $products_names = []; // Initializing

        // Loop through order items
        foreach ( $the_order->get_items() as $item ) {
            $product = $item->get_product(); // Get the WC_Product object
            $products_names[]  = $item->get_name(); // Store in an array
        }
        // Display
        echo '<ul style="list-style: none;"><li>' . implode('</li><li>', $products_names) . '</li></ul>';
    }
}

网上找的各种代码都试过了,只有插件可以用,但是没有以前这个功能那么方便了

wordpress woocommerce orders
1个回答
0
投票

要使其在新启用的高性能订单存储(以及旧模式)上工作,请使用以下命令:

add_action('manage_shop_order_posts_custom_column', 'custom_orders_list_column_content', 10, 2);
add_action('manage_woocommerce_page_wc-orders_custom_column', 'custom_orders_list_column_content', 10, 2);
function custom_orders_list_column_content( $column, $order = null ){
    if ( 'order_status' === $column ) {
        if ( ! is_a($order, 'WC_Order') ) {
            global $the_order; $order = $the_order;
        }

        $products_names = []; // Initializing

        // Loop through order items
        foreach ( $the_order->get_items() as $item ) {
            $product = $item->get_product(); // Get the WC_Product object
            $products_names[]  = $item->get_name(); // Store in an array
        }
        // Display
        echo '<ul style="list-style: none;"><li>' . implode('</li><li>', $products_names) . '</li></ul>';
    }
}

代码位于子主题的functions.php 文件中(或插件中)。已测试并有效。

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