WooCommerce 管理订单列表中的附加列(用户登录)

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

我需要在 WooCommerce 订单列表后端添加自定义列“客户”。

以下是一些向管理订单列表添加附加列并显示用户 ID 的代码:

add_filter( 'manage_edit-shop_order_columns', 'add_new_order_admin_list_column' ); 
function add_new_order_admin_list_column( $columns ) { 
    $columns['user_id'] = 'Kunde'; 
    return $columns; 
} 

add_action( 'manage_shop_order_posts_custom_column', 'add_new_order_admin_list_column_content' ); 
function add_new_order_admin_list_column_content( $column ) { 
    global $post; 
    if ( 'user_id' === $column ) { 
        $order = wc_get_order( $post->ID ); 
        echo $order->get_user_id(); 
    } 
}

如何显示“用户登录”而不是用户ID?

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

要在管理订单列表的自定义列中显示“用户登录”,您可以使用以下命令:

// Add a custom column to admin orders list
add_filter( 'manage_edit-shop_order_columns', 'custom_shop_order_column', 20 );
function custom_shop_order_column($columns)
{
    $sorted_columns = array();

    // Inserting columns to a specific location
    foreach( $columns as $key => $column){
        $sorted_columns[$key] = $column;
        if( $key ==  'order_status' ){
            $sorted_columns['customer'] = __( 'Customer', 'woocommerce');
        }
    }
    return $sorted_columns;
}

// Display content for a custom column in admin orders list
add_action( 'manage_shop_order_posts_custom_column' , 'custom_shop_order_column_content', 20, 2 );
function custom_shop_order_column_content( $column, $post_id )
{
    if ( $column === 'customer' ) {
        // Get the user ID from the order
        $user_id  = get_post_meta( $post_id, '_customer_user', true );

        if ( $user_id > 0 ) {
            // Get the WP_User object from the user ID
            $user = get_userdata( $user_id );
                
            // Display the "User login"
            echo '<span>'. $user->user_login .'</span>';
        } else {
            // For guest users
            echo '<em>'.__('Guest user').'</em>';
        }
    }
}

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

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