// 添加自定义列到订单列表
add_filter('manage_woocommerce_page_wc-orders_columns', 'add_custom_woocommerce_order_columns', 15);
function add_custom_woocommerce_order_columns($columns) {
// 添加多个自定义列标题
$columns['b_site_order_id'] = __('Site Order ID', 'woocommerce');
$columns['external_uuid'] = __('External UUID', 'woocommerce');
$columns['selected_redirect_domain'] = __('Redirect Domain', 'woocommerce');
return $columns;
}
// 显示自定义字段值
add_action('manage_woocommerce_page_wc-orders_custom_column', 'display_custom_order_column_values', 10, 2);
function display_custom_order_column_values($column, $order_id) {
$order = wc_get_order($order_id);
switch ($column) {
case 'b_site_order_id':
$site_order_id = $order->get_meta('b_site_order_id');
echo empty($site_order_id) ? __('No data', 'woocommerce') : esc_html($site_order_id);
break;
case 'external_uuid':
$external_uuid = $order->get_meta('external_uuid');
echo empty($external_uuid) ? __('No data', 'woocommerce') : esc_html($external_uuid);
break;
case 'selected_redirect_domain':
$redirect_domain = $order->get_meta('selected_redirect_domain');
echo empty($redirect_domain) ? __('No data', 'woocommerce') : esc_html($redirect_domain);
break;
}
}
美化版
add_filter('manage_woocommerce_page_wc-orders_columns', 'add_custom_woocommerce_order_columns', 15);
function add_custom_woocommerce_order_columns($columns) {
$columns['b_site_order_id'] = __('【Site Order ID】', 'woocommerce');
$columns['external_uuid'] = __('【External UUID】', 'woocommerce');
$columns['selected_redirect_domain'] = __('【Redirect Domain】', 'woocommerce');
return $columns;
}
add_action('manage_woocommerce_page_wc-orders_custom_column', 'display_custom_order_column_values', 10, 2);
function display_custom_order_column_values($column, $order_id) {
$order = wc_get_order($order_id);
switch ($column) {
case 'b_site_order_id':
$site_order_id = $order->get_meta('b_site_order_id');
echo empty($site_order_id) ?
'<mark class="custom-field custom-field-b-site-order-id"><span>' . __('No data', 'woocommerce') . '</span></mark>' :
'<mark class="custom-field custom-field-b-site-order-id"><span>' . esc_html($site_order_id) . '</span></mark>';
break;
case 'selected_redirect_domain':
$redirect_domain = $order->get_meta('selected_redirect_domain');
echo empty($redirect_domain) ?
'<mark class="custom-field custom-field-selected-redirect-domain"><span>' . __('No data', 'woocommerce') . '</span></mark>' :
'<mark class="custom-field custom-field-selected-redirect-domain"><span>' . esc_html($redirect_domain) . '</span></mark>';
break;
case 'external_uuid':
$external_uuid = $order->get_meta('external_uuid');
echo empty($external_uuid) ? __('No data', 'woocommerce') : esc_html($external_uuid);
break;
}
}
add_action('admin_head', 'custom_admin_css');
function custom_admin_css() {
?>
<style>
.custom-field-b-site-order-id {
display: inline-flex;
line-height: 2.5em;
color: #fff;
background: #06f;
border-radius: 4px;
border-bottom: 1px solid rgba(0, 0, 0, .05);
margin: -.25em 0;
cursor: inherit !important;
white-space: nowrap;
max-width: 100%;
}
.custom-field-b-site-order-id span {
margin: 0 1em;
overflow: hidden;
text-overflow: ellipsis;
}
.custom-field-selected-redirect-domain {
display: inline-flex;
line-height: 2.5em;
color: #fff;
background: #ff3045;
border-radius: 4px;
border-bottom: 1px solid rgba(0, 0, 0, .05);
margin: -.25em 0;
cursor: inherit !important;
white-space: nowrap;
max-width: 100%;
margin: 0 1em;
overflow: hidden;
text-overflow: ellipsis;
}
.custom-field-selected-redirect-domain span {
margin: 0 1em;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
<?php
}
除了上面的方法,有些朋友在开发的时候,可能还使用过 get_post, get_post_meta 这样的方法来获取订单数据,在WooCommerce 使用基于文章类型的订单数据结构来存储数据时,这当然是没问题的。但是如果 WooCommerce 使用的HPOS高性能订单数据结构来存储数据时,使用基于文章类型的订单获取方法可能就获取不到数据了。所以建议大家在以后的开发过程中,尽量使用 WC_Order 类来获取数据,不管 WooCommerce 的数据结构怎么变化,这个类的方法时不会轻易变更的,这样就能保证我们主题和插件的向前兼容性, 减少维护工作。
还没有评论呢,快来抢沙发~