猿问

在 WooCommerce 管理订单列表自定义列中显示数据

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


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 进行的,还有一些货到付款的订单,目前已禁用。我在这里缺少什么?



浮云间
浏览 240回答 1
1回答

慕容3067478

您的代码中存在一些错误和缺失的内容,请尝试以下操作: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 文件中。经过测试并有效。
随时随地看视频慕课网APP
我要回答