【问题标题】:Displaying data in WooCommerce admin orders list custom columns在 WooCommerce 管理订单列表自定义列中显示数据
【发布时间】:2020-10-12 21:13:15
【问题描述】:

我正在添加以下自定义列,它们都出现了:

function add_order_new_column_header( $columns ) {

    $new_columns = array();

    foreach ( $columns as $column_name => $column_info ) {

        $new_columns[ $column_name ] = $column_info;

        if ( 'order_total' === $column_name ) {
            $new_columns['order_shipping'] = __( 'Tarnemeetod', 'my-textdomain' );
            $new_columns['order_payment'] = __( 'Maksemeetod', 'my-textdomain' );
        }
    }

    return $new_columns;

然后我添加以下内容来生成数据:

add_filter( 'manage_edit-shop_order_columns', 'add_order_new_column_header', 20);
add_action( 'manage_shop_order_posts_custom_column', 'add_wc_order_admin_list_column_content' );
function add_wc_order_admin_list_column_content( $column ) {
   
    global $post;
 
    if ( 'order_shipping' === $column ) {
 
        $order = wc_get_order( $post->ID );
        echo $order->get_shipping_method();
        
    if ( 'order_payment' === $column ) {
        $order = wc_get_order( $post->ID );
        echo $order->get_payment_method_title();
    }
    }
}

order_shipping 显示正确的送货方式,但 order_payment 为空。 我没有在网站上使用多种语言。 WooCommerce 4.1.1、PHP 7.3.19

从 WooCommerce 订单管理面板查看:

我已经尝试过 get_payment_method 和 get_payment_method_list。我的订单主要是 BACS,还有一些现时禁用的现收现付。我在这里错过了什么?

【问题讨论】:

    标签: php wordpress woocommerce backend orders


    【解决方案1】:

    您的代码中存在一些错误和遗漏的内容,请尝试以下操作:

    add_filter( 'manage_edit-shop_order_columns', 'add_custom_columns_to_admin_orders', 20);
    function add_custom_columns_to_admin_orders( $columns ) {
        $new_columns = array();
    
        foreach ( $columns as $column_name => $column_info ) {
            $new_columns[ $column_name ] = $column_info;
    
            if ( 'order_total' === $column_name ) {
                $new_columns['order_shipping'] = __( 'Tarnemeetod', 'my-textdomain' );
                $new_columns['order_payment'] = __( 'Maksemeetod', 'my-textdomain' );
            }
        }
        return $new_columns;
    }
    
    
    add_action( 'manage_shop_order_posts_custom_column', 'custom_columns_content_in_admin_orders' );
    function custom_columns_content_in_admin_orders( $column ) {
        global $post, $the_order;
    
        if ( 'order_shipping' === $column ) {
            echo $the_order->get_shipping_method();
        }
        if ( 'order_payment' === $column ) {
            echo $the_order->get_payment_method_title();
        }
    }
    

    代码在您的活动子主题(或活动主题)的functions.php 文件中。经过测试并且可以工作。

    【讨论】:

    • 确实如此! :) 太感谢了!至少应该看到缺少的结束 }。
    • @KarlHelberg 和 global $the_order; 优于 $order = wc_get_order( $post->ID );
    猜你喜欢
    • 2020-11-11
    • 2021-02-21
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多