+ 收藏我们

网站模板

网站模板搜索
404模板 营销型模板 外贸网站模板 单页模板 双语模板 标签大全
电话:18630701785
首页 > 站长学院 > 允许用户在WooCommerce中通过搜索订单备注过滤订单 >

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

时间:2024-07-28 12:03:24

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

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

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

复制
add_filter('woocommerce_shop_order_search_results', function ($order_ids, $term, $search_fields)
{
    global $wpdb;

    $comment_query = $wpdb->get_results(
        $wpdb->prepare(
            "SELECT comment_post_ID
             FROM {$wpdb->prefix}comments as comment_ids
             WHERE comment_content LIKE %s
             AND comment_type LIKE %s",
            '%' . $wpdb->esc_like(wc_clean($term)) . '%',
            'order_note'
        )
    );

    $comment_posts_id = wp_list_pluck($comment_query, 'comment_post_ID');

    if ( ! empty($comment_posts_id)) {
        $order_ids = array_merge($order_ids, $comment_posts_id);
    }

    return $order_ids;
}, 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 进行修改。

有问题可以加入网站技术QQ群一起交流学习

本站会员学习、解决问题QQ群(691961965)

客服微信号:lpf010888

Title