【问题标题】:How to display usernames in Woocommerce Admin orders list custom column?如何在 Woocommerce Admin 订单列表自定义列中显示用户名?
【发布时间】:2018-09-23 00:32:58
【问题描述】:

我正在尝试制作一个显示 WordPress 用户的自定义 Woocommerce 订单概览列。

这是位于functions.php 文件中的代码:

// ADDING A NEW COLUMN
add_filter( 'manage_edit-shop_order_columns', 'k2i_extra_column_eldest_players', 20 );
function k2i_extra_column_eldest_players($columns)
{
    $reordered_columns = array();

    // Inserting columns to a specific location
    foreach( $columns as $key => $column){
        $reordered_columns[$key] = $column;
        if( $key ==  'order_status' ){
            // Inserting after "Status" column
            $reordered_columns['skb-client'] = __( 'Oudste Speler','theme_domain');
        }
    }
    return $reordered_columns;
}

// Adding custom fields meta data for the column
add_action( 'manage_shop_order_posts_custom_column' , 'custom_orders_list_column_content', 20, 2 );
function custom_orders_list_column_content( $column, $post_id )
{
    switch ( $column )
    {
        case 'skb-client' :
            // Get custom post meta data
            $my_var_one = get_post_meta( $post_id, 'user_name', true );
            if(!empty($my_var_one))
                echo $my_var_one;

            // Testing (to be removed) - Empty value case
            else
                echo '<small>(<em>no value</em>)</small>';

            break;
    }
}

我认为我的错误在于这行代码:

$my_var_one = get_post_meta( $post_id, 'user_name', true );

元键 'user_name' 可能不是正确的...但我似乎找不到正确的。

我们将不胜感激。

【问题讨论】:

    标签: php wordpress woocommerce orders


    【解决方案1】:

    更新:在woocommerce订单中获取用户ID的正确meta_key_customer_user,所以:

    $user_id = get_post_meta( $post_id, '_customer_user', true );
    

    或者你可以使用$the_order全局对象作为:

    global $the_order;
    $user_id = $the_order->get_customer_id();
    

    在你可以从这个用户 ID 中获取 WordPress 用户数据之后:

    $user_data = get_userdata( $userid );
    
    echo 'Username: ' . $user_data->user_login . "<br>";
    echo 'User email: ' . $user_data->user_email . "<br>";
    echo 'User roles: ' . implode(', ', $user_data->roles) . "<br>";
    echo 'User ID: ' . $user_data->ID . "<br>";
    echo 'User full name: ' . $user_data->last_name .  ", " . $user_data->first_name . "<br>";
    

    所以在你的代码中:

    // Adding a custom new column to admin orders list
    add_filter( 'manage_edit-shop_order_columns', 'custom_column_eldest_players', 20 );
    function custom_column_eldest_players($columns)
    {
        $reordered_columns = array();
    
        // Inserting columns to a specific location
        foreach( $columns as $key => $column){
            $reordered_columns[$key] = $column;
            if( $key ==  'order_status' ){
                // Inserting after "Status" column
                $reordered_columns['skb-client'] = __( 'Oudste Speler','theme_domain');
            }
        }
        return $reordered_columns;
    }
    
    // Adding custom fields meta data for the column
    add_action( 'manage_shop_order_posts_custom_column' , 'custom_orders_list_column_content', 20, 2 );
    function custom_orders_list_column_content( $column, $post_id )
    {
        if ( 'skb-client' != $column ) return;
    
        global $the_order;
    
        // Get the customer id
        $user_id = $the_order->get_customer_id();
    
        if( ! empty($user_id) && $user_id != 0) {
            $user_data = get_userdata( $user_id );
            echo $user_data->user_login; // The WordPress user name
        }
        // Testing (to be removed) - Empty value case
        else
            echo '<small>(<em>Guest</em>)</small>';
    }
    

    代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试和工作

    【讨论】:

    • 您好 LoicTheAztec,感谢您提供非常详细的示例。我已经对我的代码进行了更改,但现在列值似乎是空的。之前当我使用错误的元键时,我得到了 (无值),现在我得到一个空列,所以我猜想发生了一些事情,但无法检索数据。我将添加一个屏幕截图以进行澄清:click here!
    • @ArneDeBelser 我需要测试一下...我会尽快回复您...
    • 没问题!我也在找,说不定能在你之前找到! :P(谢谢顺便说一句)
    • @ArneDeBelser 找到了问题,已更新并正在工作...... :)
    • 谢谢,它确实有效!我接受这个答案。你究竟做了什么来解决这个问题,据我所知,你取出了 switch 语句(那里并不真正需要)。您还检查了 skb-client 确实是一列。但我并没有真正看到你回显 user_login 的 if 语句有什么不同。
    猜你喜欢
    • 2021-06-10
    • 2020-10-12
    • 2020-11-11
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 2021-04-28
    • 2019-07-21
    • 1970-01-01
    相关资源
    最近更新 更多