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

时间:2020-06-22 21:51:33

标签: php wordpress woocommerce backend orders

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

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订单管理面板中查看:
view from WooCommerce orders admin panel

我已经尝试过get_payment_method和get_payment_method_list。我主要是通过BACS进行订购,并且有一些现款取货已被禁用。我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

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

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文件中。经过测试,可以正常工作。