WooCommerce 一直缺少一个功能,就是在单个订单管理页面上查看历史订单,我们可以通过这个功能快速查看客户过去的购买记录,购买了哪些产品,有多少消费、购买的频率是多少。
其实我们只需一个简单的 PHP 代码段,就可以添加此功能,下面,我将为大家介绍实现此功能所需的步骤,为你提供在订单管理页面上显示订单历史详细信息所需的 PHP 代码。
在单个订单管理界面,我们添加了一个新的 「元数据框」,其中包含当前 WooCommerce 客户 ID 的最新 10 个订单信息
实现订单在订单管理页显示客户最近10个订单的PHP代码
首先我们使用 add_meta_boxes
钩子可在 WooCommerce 单笔订单管理页面上添加一个元数据框。add_meta_box
函数会将标题设置为 “客户历史订单”,并将其与shop_order
文章类型关联。
wprs_display_order_history
函数在元数据框加载时触发,它会收集相关的客户订单历史记录,并以表格格式输出。
订单检索:代码会获取当前订单的客户 ID,以加载该客户之前的多达 10 个订单。通过使用'return' => 'ids'
,它只检索订单 ID,从而加快了查询速度。
输出格式化:对于每个过去的订单,代码都会显示订单 ID、日期、产品名称(用|
分隔)和状态,从而在单个订单管理页面上提供客户订单历史的有序视图。
add_action( 'add_meta_boxes', function() {
add_meta_box( 'order_history', 'Customer Order History', 'wprs_display_order_history', 'shop_order', 'normal', 'default' );
}, 1 );
function wprs_display_order_history() {
global $post;
$order = wc_get_order( $post->ID );
if ( ! $order ) return;
$orders = array();
if ( $id = $order->get_customer_id() ) {
$orders = wc_get_orders( [ 'customer_id' => $id, 'return' => 'ids', 'limit' => 10 ] );
}
if ( ! $orders ) return;
echo '<table style="width:100%"><thead><tr><th>ID</th><th>DATE</th><th>ITEMS</th><th>STATUS</th></tr></thead><tbody>';
foreach ( $orders as $order_id ) {
$order = wc_get_order( $order_id );
if ( ! $order ) continue;
$items = array();
foreach ( $order->get_items() as $item_id => $item ) {
$items[] = $item->get_name();
}
echo '<tr><td>' . $order_id . '</td><td>' . wc_format_datetime( $order->get_date_created() ) . '</td><td>' . implode( ' | ', $items ) . '</td><td>' . $order->get_status() . '</td></tr>';
}
echo '</tbody></table>';
}
把上面的代码添加到主题或插件中,我们就可以实现在订单详情页显示客户订单历史记录的功能,从而更方便的在管理订单的时候了解客户的订单历史信息,除了显示历史订单,如果需要,我们还可以在订单详情页面显示和客户相关的其他信息,有需要的朋友可以在评论中提出,我可以帮大家研究一下怎么实现。