我需要帮助在 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');
}
}
}
我的代码未按预期工作,它不显示数据。
我做错了什么?我们将不胜感激您的帮助。
您的第二个函数中有多个错误,例如列字符串值应该是
'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 文件中(或插件中)。已测试并有效。