【问题标题】:Show in Woocommerce admin orders list the username that has completed the order在 Woocommerce 管理订单列表中显示已完成订单的用户名
【发布时间】:2018-04-04 13:07:45
【问题描述】:

在 woocommerce 中如何在管理订单列表中显示哪个用户已标记为“已完成” 此屏幕截图中的顺序:

【问题讨论】:

    标签: php wordpress woocommerce backend orders


    【解决方案1】:

    这可以通过以下方式完成……但是当您添加此代码时,它将为启动后状态已更改为已完成的订单生成:

    // Save backend user and time for completion order
    add_action('woocommerce_order_status_completed', 'user_has_completed_order');
    function user_has_completed_order( $order_id ) {
        if ( ! is_admin() ) return;
    
        $user_id = get_current_user_id();
    
        if ( ! empty( $user_id ) && $user_id != 0 ) {
            $now = date('Y-m-d H:i:s');
            update_post_meta( $order_id, '_completed_by_user', $user_id );
            update_post_meta( $order_id, '_completed_datetime', $now );
        }
    }
    
    // Adding 1 new columns to backend order list
    add_filter( 'manage_edit-shop_order_columns', 'custom_shop_order_column',11);
    function custom_shop_order_column($columns)
    {
        $reordered_columns = array();
    
        // Woocommerce version 3.3+ compatibility
        $location_after = version_compare( WC_VERSION, '3.3', '<' ) ? 'order_notes' : 'order_status';
    
        // Inserting the new column in a specific location
        foreach( $columns as $key => $column){
            $reordered_columns[$key] = $column;
            if( $key == $location_after ){
                $reordered_columns['completed_by'] = __( 'Completed by','woocommerce');
            }
        }
        return $reordered_columns;
    }
    
    // Adding the data for the additional column (example)
    add_action( 'manage_shop_order_posts_custom_column' , 'custom_orders_list_column_content', 10, 2 );
    function custom_orders_list_column_content( $column, $post_id )
    {
        if( 'completed_by' == $column )
        {
            // Get custom post meta data
            $user_id = get_post_meta( $post_id, '_completed_by_user', true );
            $date_time = get_post_meta( $post_id, '_completed_datetime', true );
            $date = date('Y-m-d', strtotime($date_time));
            if( ! empty($user_id) ){
                $user_data = get_userdata( $user_id );
                $user_url = get_edit_user_link( $user_id );
                echo '<a href="'.$user_url.'" title="'.$date_time.'">'.$user_data->user_login.'</a>';
            }
        }
    }
    

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

    它适用于所有 woocommerce 版本,包括最后一个版本 3.3,其中订单列表略有改进:

    【讨论】:

    • @X-Developer 这正是它所做的......它显示了哪个商店经理或管理员已将状态更改为完成(以及何时)......所以如果这个答案正在回答你的问题,请@987654322 @,谢谢
    • 好吧伙计...抱歉问我必须把他的代码functions.php放在哪里?如果这不是问题,你能告诉我一点吗
    • @X-Developer 正如您在下面看到的答案代码:“代码进入 您的活动子主题的 function.php 文件(或活动主题)... ",所以是的 function.php 文件是正确的地方。
    猜你喜欢
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 2023-01-25
    • 1970-01-01
    • 2020-11-11
    • 2017-01-19
    相关资源
    最近更新 更多