WooCommerce 管理订单列表中的自定义列不显示数据

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

我需要帮助在 WooCommerce 订单列表中显示自定义订单元数据。我添加了一个名为“会议点”和“会议日期和时间”的新自定义列。

这是迄今为止我的代码:

add_filter('manage_edit-shop_order_columns', 'add_meeting_points_column');
function add_meeting_points_column($columns) {
    $columns = array_merge(
        array_slice($columns, 0, array_search('order_date', array_keys($columns)), true),
        array('meeting_points' => __('Meeting Points', 'text-domain')),
        array_slice($columns, array_search('order_date', array_keys($columns)), null, true)
    );
    return $columns;
}

add_action('manage_shop_order_posts_custom_column', 'display_meeting_points_column', 20, 2);
function display_Meeting_Points_column($column, $post_id) {
    if ('Meeting_Points' === $column) {
        $order = wc_get_order($post_id);

        if ($order) {
            $meeting_points = wc_get_order_meta_keys($order->get_keys(), 'MeetingPoints', true);
            echo !empty($meeting_points) ? esc_html($meeting_points) : esc_html__('Not Available', 'text-domain');
        }
    }
}

我的代码未按预期工作,它不显示数据。

我做错了什么?我们将不胜感激您的帮助。

php wordpress woocommerce metadata orders
1个回答
0
投票

您的第二个函数中有多个错误,例如列字符串值应该是

'meeting_points'
而不是
'Meeting_Points'
,以使用自定义元数据填充列。

尝试以下代码替换(确保

MeetingPoints
MeetingDate&Time
是第二个函数中正确的元键)

add_filter('manage_edit-shop_order_columns', 'add_meeting_points_column');
function add_meeting_points_column($columns) {
    $columns = array_merge(
        array_slice($columns, 0, array_search('order_date', array_keys($columns)), true),
        array(
            'meeting_points' => __('Meeting Points', 'text-domain'),
            'meeting_datetime' => __('Meeting DateTime', 'text-domain'),
        ),
        array_slice($columns, array_search('order_date', array_keys($columns)), null, true)
    );
    return $columns;
}

add_action('manage_shop_order_posts_custom_column', 'display_meeting_points_column', 20, 2);
function display_Meeting_Points_column($column, $post_id) {
    global $the_order;

    if ($column === 'meeting_points') {
        echo ($value = $the_order->get_meta('MeetingPoints')) ? esc_html($value) : esc_html__('Not Available', 'text-domain');
    } elseif ($column === 'meeting_datetime') {
        echo ($value = $the_order->get_meta('MeetingDate&Time')) ? esc_html($value) : esc_html__('Not Available', 'text-domain');
    }
}

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

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