新闻中心

获取 WooCommerce 客户订单:获取当前订单和之前的订单信息

2025-11-18
浏览次数:
返回列表

获取 woocommerce 客户订单:获取当前订单和之前的订单信息

本文档旨在指导开发者如何在 WooCommerce 后台订单编辑页面获取指定客户的订单信息,特别是当前订单和之前的订单的账单地址。通过提供的代码示例,您可以轻松地在后台订单编辑页面显示客户的过往订单账单地址,方便您进行订单管理和客户服务。

获取 WooCommerce 客户订单信息

在 WooCommerce 开发中,经常需要获取客户的订单信息,例如账单地址、订单状态等。本教程将介绍如何在 WooCommerce 后台订单编辑页面获取当前客户和之前订单的账单地址。

前提条件

  • 已安装并激活 WooCommerce 插件。
  • 熟悉 WordPress 和 WooCommerce 的基本开发知识。
  • 了解 PHP 编程语言。

实现步骤

我们将通过以下步骤实现目标:

  1. 使用 woocommerce_admin_order_data_after_shipping_address 钩子,在后台订单编辑页面添加自定义内容。
  2. 获取当前订单的客户 ID。
  3. 使用 wc_get_orders() 函数获取客户的所有已完成订单。
  4. 遍历订单,提取账单地址信息并显示。

代码实现

以下是获取所有已完成订单的代码示例:

add_action( 'woocommerce_admin_order_data_after_shipping_address', 'edit_woocommerce_order_page', 10, 1 );

function edit_woocommerce_order_page($order){
    $customer_id =  $order->get_user_id();
    // 检查是否为访客订单
    if($customer_id != 0):
        $args = array(
            'customer_id' => $customer_id,
            'status' => array('wc-completed'), // 设置订单状态为已完成,可根据需求修改
            'exclude' => array( $order->get_id() ), // 排除当前订单,避免重复显示
        );
        $orders = wc_get_orders( $args );
        if($orders):
            foreach($orders as $k=>$order):
                echo '<p><strong>账单地址:</strong>'.$order->get_billing_address_1().'</p>';
            endforeach;
        endif;
    endif;
}

代码解释:

  • add_action( 'woocommerce_admin_order_data_after_shipping_address', 'edit_woocommerce_order_page', 10, 1 ):将 edit_woocommerce_order_page 函数添加到 woocommerce_admin_order_data_after_shipping_address 钩子,在后台订单编辑页面的配送地址后显示自定义内容。
  • $order->get_user_id():获取当前订单的客户 ID。
  • $args 数组:用于配置 wc_get_orders() 函数的参数。
    • customer_id:客户 ID,用于筛选指定客户的订单。
    • status:订单状态,这里设置为 wc-completed,表示已完成的订单。可以根据需求修改为其他状态,如 wc-processing(处理中)、wc-on-hold(待处理)等。
    • exclude:排除的订单 ID,这里排除当前订单,避免重复显示。
  • wc_get_orders( $args ):获取符合条件的订单数组。
  • foreach 循环:遍历订单数组,提取每个订单的账单地址信息,并使用

    标签显示。

    企站帮微商城系统Access版 企站帮微商城系统Access版

    OdnShop(原企站帮微商城系统,更名为OdnShop),基于ASP.NET 4.0+Access开发的轻量级微信商城系统,前台简洁美观,后台容易操作。系统容易部署,空间成本低,大部分的几百块一年的虚拟主机均可支持(具体请咨询空间商),适合要求不高,预算不多的小商店,小企业初次尝试微信线上销售产品,目前基本的核心功能,包括微信登陆/支付,产品管理,购物车与订单管理,分享获取积分,积分礼品兑换功能

    企站帮微商城系统Access版 0 查看详情 企站帮微商城系统Access版

限制订单数量

如果您只想显示最近的几个订单,可以使用 limit 参数限制订单数量。

add_action( 'woocommerce_admin_order_data_after_shipping_address', 'edit_woocommerce_order_page', 10, 1 );

function edit_woocommerce_order_page($order){
    $customer_id =  $order->get_user_id();
    // 检查是否为访客订单
    if($customer_id != 0):
        $args = array(
            'customer_id' => $customer_id,
            'status' => array('wc-completed'), // 设置订单状态为已完成,可根据需求修改
            'limit' => 2, // 限制只显示最近的 2 个订单
        );
        $orders = wc_get_orders( $args );
        if($orders):
            foreach($orders as $k=>$order):
                echo '<p><strong>账单地址:</strong>'.$order->get_billing_address_1().'</p>';
            endforeach;
        endif;
    endif;
}

获取当前订单和之前的订单

以下代码示例展示了如何获取当前订单和之前的订单信息:

function edit_woocommerce_order_page($order){
    $customer_id =  $order->get_user_id();
    // 获取当前订单 ID
    $order_id = $order->get_id();
    if($customer_id != 0):
        $args = array(
            'customer_id' => $customer_id,
            'status' => array('wc-completed'), // 设置订单状态为已完成,可根据需求修改
            'return' => 'ids', // 返回订单 ID
            'posts_per_page' => -1 // 获取所有订单
        );
        $all_order_ids = wc_get_orders( $args );
        // 查找当前订单的键值
        $all_order_id_keys = array_flip(array_keys($all_order_ids));
        $current_order_key = array_keys($all_order_ids, $order_id);
        // 获取所有订单 ID 的值
        $all_order_id_values = array_values($all_order_ids);
        // 从所有值中查找当前订单的键值,并加 1 获取前一个订单的 ID
        $previous_order_id = $all_order_id_values[$all_order_id_keys[$current_order_key[0]]+1];
        $order_args = array(
            'post__in' => array($order_id,$previous_order_id),
        );
        $orders = wc_get_orders( $order_args );
        if($orders):
            foreach($orders as $k=>$order):
                echo $order->get_id(); // 用于测试
                echo '<p><strong>账单地址:</strong>'.$order->get_billing_address_1().'</p>';
            endforeach;
        endif;
    endif;
}
add_action( 'woocommerce_admin_order_data_after_shipping_address', 'edit_woocommerce_order_page', 10, 1 );

代码解释:

  • $args 数组:
    • return:设置为 ids,表示只返回订单 ID。
    • posts_per_page:设置为 -1,表示获取所有订单。
  • array_flip(array_keys($all_order_ids)):将订单 ID 数组的键和值进行反转,方便查找当前订单的键值。
  • array_keys($all_order_ids, $order_id):查找当前订单 ID 在数组中的键值。
  • $all_order_id_values[$all_order_id_keys[$current_order_key[0]]+1]:获取前一个订单的 ID。
  • $order_args 数组:用于获取当前订单和前一个订单的信息。
    • post__in:指定要获取的订单 ID 数组。

注意事项

  • 请根据实际需求修改代码中的订单状态、订单数量等参数。
  • 在生产环境中,建议对代码进行错误处理和安全性检查。
  • 可以根据需要提取订单的其他信息,如订单总额、下单时间等。
  • 确保代码放置在主题的 functions.php 文件或自定义插件中。

总结

通过本教程,您学习了如何在 WooCommerce 后台订单编辑页面获取客户的订单信息,包括当前订单和之前的订单的账单地址。您可以根据自己的需求修改代码,实现更复杂的功能。希望本教程对您有所帮助!

以上就是获取 WooCommerce 客户订单:获取当前订单和之前的订单信息的详细内容,更多请关注php中文网其它相关文章!


# 可根据  # 短视频营销推广商  # 南昌专业seo公司  # 苏州抖音seo传媒公司  # 苏州网站建设培训学习  # 焦作短视频seo培训  # 好博客seo优化技术  # 大理营销推广怎么样  # 泗水seo优化获客  # 霍城县机场建设招标网站  # seo男团侵权没  # 可以根据  # php  # 访客  # 您可以  # 设置为  # 自定义  # 键值  # 多维  # 遍历  # 编程语言  # wordpress  # word 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: sublime如何处理大型CSV文件的列对齐_sublime高级表格编辑插件指南  天猫2025双十一0点秒杀攻略 天猫爆款抢购时间  Node.js中HTML按钮与J*aScript函数交互的正确姿势  照顾宝贝2小游戏免费秒玩入口  2025AO3夸克浏览器通道_AO3手机HTTPS安全入口分享  将HTML Canvas内容转换为可上传的图像文件(File对象)  新手怎么开始学化妆 零基础化妆入门教程  支付宝如何设置安全保护_支付宝安全设置的全面教程  Golang如何优雅处理error_Golang error处理最佳实践总结  妖精漫画网页版登录入口免费_妖精漫画官网主页直接阅读漫画  护手霜蹭到袖口上了如何清洗? 怎样避免留下一圈油印?  sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置  俄罗斯搜索引擎Yandex指南 附2025年免登录官网入口  C++如何生成随机数_C++ random库使用方法与范围设置  将JSON对象数组转置为键值对列表的实用指南  Angular中单选按钮的正确使用与常见陷阱解析  css链接悬停下划线样式如何自定义_使用::after结合content和transition  怎样把文件彻底粉碎无法恢复_Windows下安全删除敏感数据【隐私保护】  Google翻译怎么语音输入_Google翻译语音输入功能使用与设置方法  TikTok国际版官网直达_TikTok国际版官网直达进入在线观看  印象笔记如何设离线包出差查阅_印象笔记设离线包出差查阅【离线阅读】  Typer应用中灵活处理命令行参数的令牌化与解析  韩小圈电脑版在线入口_网页版免费登录地址  c++20的std::jthread是什么_c++可中断线程与RAII式管理  Spring Boot内嵌服务器与J*a EE全栈特性:选择与部署策略  解决Python单元测试中Mock异常方法调用计数为零的问题  FullCalendar 自定义按钮样式定制指南  qq游戏免费畅玩入口_qq游戏电脑版快速启动  AI抖音网页版免费视频入口 AI抖音网页端最新视频实时观看  win11 Snap Layouts怎么用 Win11窗口布局与分屏多任务高效指南【必学】  天眼查企业查询官网入口 天眼查官方网页版查询  印象笔记怎样用批量导出备知识库_印象笔记用批量导出备知识库【备份方法】  Mac怎么锁定备忘录_Mac备忘录加密设置教程  css元素hover动画延迟生效怎么办_使用animation-delay调整触发时间  批改网学生版PC登录 批改网官网登录系统入口  深入理解Google Cloud Datastore查询:祖先路径与数据一致性  蛙漫漫画免费阅读入口_蛙漫官方正版无广告纯净版  outlook中文官网入口地址 outlook官方中文版直达首页链接  Win11怎么用U盘重装系统 Win11制作启动盘并重装系统完整教程【详解】  绝地鸭卫平a核爆刀流玩法攻略  yandex入口引擎手机版 yandex安卓版下载入口  React Router 嵌套组件中 URL 重定向问题的解决方案  随机参数递归函数的基准调用次数与时间复杂度探究  PySpark中从现有列右侧提取可变长度字符创建新列的教程  C#中解析不规范的HTML为XML 常见的坑与解决办法  DLsite中文平台入口 DLsite官网内容在线查看  狙击外星人小游戏开始_狙击外星人小游戏立即开始  蛙漫安全无毒 官方认证的绿色入口  淘宝支付提示失败如何解决 淘宝支付流程优化方法  网易大神账号申诉需要多久_网易大神账号申诉流程说明 

搜索