我需要在 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?
要在管理订单列表的自定义列中显示“用户登录”,您可以使用以下命令:
// 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 文件中(或插件中)。已测试并有效。