允许用户在 WooCommerce 中通过搜索订单备注过滤订单

在处理 WooCommerce 订单的时候,我们会添加一些信息到订单备注中,这些订单备注在 WooCommerce 的订单搜索功能中是无法被搜索的。当我们需要通过订单备注查找订单的时候,就变得非常困难了。

我们知道,WooCommerce 的订单备注是保存在评论数据库中的,同时 WooCommerce 为我们提供了一个名为「woocommerce_shop_order_search_results」的 filter 来让我们过滤订单搜索结果。有了这两个信息,我们就可以通过查询评论数据来搜索订单备注了。

在 WooCommerce 中搜索订单备注的关键代码

下面是允许用户在 WooCommerce 中搜索订单备注的代码。代码中通过查询评论数据中包含某关键词的评论,获取这些评论的文章 ID(也就是订单 ID)。然后包含这些评论的订单 ID,就达到了通过搜索订单备注查询过滤订单的目的。

  1. add_filter('woocommerce_shop_order_search_results', function ($order_ids, $term, $search_fields)
  2. {
  3.     global $wpdb;
  4. 
    
  5.     $comment_query = $wpdb->get_results(
  6.         $wpdb->prepare(
  7.             "SELECT comment_post_ID
  8.              FROM {$wpdb->prefix}comments as comment_ids
  9.              WHERE comment_content LIKE %s
  10.              AND comment_type LIKE %s",
  11.             '%' . $wpdb->esc_like(wc_clean($term)) . '%',
  12.             'order_note'
  13.         )
  14.     );
  15. 
    
  16.     $comment_posts_id = wp_list_pluck($comment_query, 'comment_post_ID');
  17. 
    
  18.     if ( ! empty($comment_posts_id)) {
  19.         $order_ids = array_merge($order_ids, $comment_posts_id);
  20.     }
  21. 
    
  22.     return $order_ids;
  23. }, 11, 3);

把上面的代码复制到主题的 functions.php 或插件中即可。

搜索更多 WooCommerce 自定义数据

除了搜索订单备注,我们还可以通过 「woocommerce_shop_order_search_results」filter 来实现更多自定义数据的搜索。这个 filter 提供了 3 个参数:$order_ids, $term, $search_fields

  • $order_ids: 上一个 Filter 返回的订单 ID 数据,如果我们的自定义查询没有结果,直接返回这个参数即可。
  • $term:搜索关键词
  • $search_fields:搜索字段,主要是指订单中的自定义字段,主要是搜索查询的自定义字段名称。我们可以用这个自定来做一些判断。如果想修改这个字段,请使用 「woocommerce_shop_order_search_fields」filter 进行修改。

原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/83337

WordPress安全防护插件
服务项目 服务内容 收费标准(元)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

电子邮件地址不会被公开。 必填项已用*标注