返回

如何在 WooCommerce 订单列表中轻松显示用户信息?

php

在 WooCommerce 订单列表中显示用户信息

引言

在管理大量订单时,掌握每个订单背后的关键信息至关重要。用户信息是其中一项重要的数据,它可以帮助我们快速识别订购者、处理客户查询或分配任务。本文将深入探讨如何在 WooCommerce 管理界面中为订单列表添加新列,以显示用户信息。

问题:缺乏用户数据的订单列表

在默认情况下,WooCommerce 的订单列表提供了诸如订单状态、产品、总价等基本信息。然而,它缺少显示用户信息的重要列,例如客户姓名、电子邮件或电话号码。这可能会给订单管理带来不便,尤其是当我们需要联系客户或跟踪特定订购者时。

解决方案:添加自定义列

为了解决这个问题,我们可以通过添加自定义列来扩展订单列表表格。这需要使用过滤器和动作钩子来修改管理界面。

步骤 1:添加自定义列

add_filter('manage_edit-shop_order_columns', 'custom_order_columns');
function custom_order_columns($columns)
{
    $new_columns = [];
    foreach ($columns as $column_name => $column_info) {
        $new_columns[$column_name] = $column_info;
        if ('order_status' === $column_name) {
            $new_columns['contributor'] = __('Contributor', 'textdomain');
        }
    }
    return $new_columns;
}

这段代码向订单列表表格中添加一个名为 "Contributor" 的新列,将其插入到 "Order Status" 列之后。

步骤 2:填充自定义列

add_action('manage_shop_order_posts_custom_column', 'custom_order_column_content', 10, 2);
function custom_order_column_content($column, $post_id)
{
    if ('contributor' === $column) {
        $contributor_id = get_post_meta($post_id, 'custom_order_contributor', true);
        if ($contributor_id) {
            $contributor = get_userdata($contributor_id);
            if ($contributor) {
                echo $contributor->display_name;
            } else {
                echo 'Unassigned';
            }
        } else {
            echo 'Unassigned';
        }
    }
}

这段代码负责填充自定义列中的数据。它首先检查该列是否为 "Contributor",如果是,则从订单元数据中获取订购者的用户 ID。然后,它获取用户数据并显示订购者的显示名称。如果没有分配订购者,则显示 "Unassigned"。

结论

通过实施这些代码片段,我们成功地在 WooCommerce 订单列表表格中添加了一个新列,用于显示用户信息。这将显著提高订单管理的效率,使我们能够快速识别订购者并根据需要采取行动。

常见问题解答

1. 添加的自定义列可以排序吗?

是的,你可以通过实现适当的过滤器函数来使自定义列可排序。

2. 如何从订单列表中删除自定义列?

你可以通过从 manage_edit-shop_order_columns 过滤器中删除自定义列代码片段来删除它。

3. 自定义列可以显示哪些其他用户数据?

除了显示名称之外,你还可以显示电子邮件、电话号码、地址或任何其他存储在用户元数据中的相关信息。

4. 是否可以在其他 WooCommerce 表格中添加自定义列?

是的,同样的方法可以应用于 WooCommerce 中的其他表格,例如产品、客户或优惠券表。

5. 是否可以对自定义列进行其他自定义,例如颜色或字体样式?

是的,你可以通过使用 CSS 规则对自定义列应用其他样式。