You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在WooCommerce的wc-orders新建页与wc-users页实现手机号搜索用户

WooCommerce手机号搜索用户实现方案(适配新建订单+用户列表页)

一、用户列表页(wp-admin/users.php)搜索修复

之前的代码出错大概率是未限制生效范围或SQL拼接不当,以下代码仅在用户列表页生效,兼容WooCommerce默认账单手机号字段:

add_action('pre_user_query', 'phone_search_for_users_list');
function phone_search_for_users_list($query) {
    global $pagenow;
    
    // 仅在用户列表页且存在搜索关键词时触发
    if ($pagenow !== 'users.php' || empty($_GET['s'])) {
        return;
    }

    $search_term = sanitize_text_field($_GET['s']);
    $meta_query = $query->query_vars['meta_query'] ?? [];
    
    // 添加账单手机号搜索条件(字段名可根据实际修改)
    $meta_query[] = [
        'key'     => 'billing_phone',
        'value'   => $search_term,
        'compare' => 'LIKE'
    ];
    
    $query->query_vars['meta_query'] = $meta_query;
    
    // 合并搜索逻辑,让手机号与用户名/邮箱等一同参与搜索
    $original_search = $query->search_clause;
    $query->search_clause = $original_search . " OR (user_meta.meta_value LIKE '%{$search_term}%' AND user_meta.meta_key = 'billing_phone')";
}

二、新建订单页(wp-admin/admin.php?page=wc-orders&action=new)搜索实现

新建订单页的用户搜索是AJAX请求,需通过WooCommerce专属钩子修改查询逻辑:

add_filter('woocommerce_ajax_search_users_query', 'phone_search_for_new_order');
function phone_search_for_new_order($query_args, $search_term) {
    // 仅针对新建订单页的用户搜索AJAX请求生效
    if ($_POST['action'] !== 'woocommerce_json_search_users') {
        return $query_args;
    }

    $phone_meta_query = [
        'relation' => 'OR',
        [
            'key'     => 'billing_phone',
            'value'   => $search_term,
            'compare' => 'LIKE'
        ]
    ];

    // 合并到原有查询条件中
    if (!empty($query_args['meta_query'])) {
        $query_args['meta_query']['relation'] = 'OR';
        $query_args['meta_query'] = array_merge($query_args['meta_query'], $phone_meta_query);
    } else {
        $query_args['meta_query'] = $phone_meta_query;
    }

    return $query_args;
}

注意事项

  • 如果你的站点使用自定义手机号字段(而非WooCommerce默认的billing_phone),请将代码中的billing_phone替换为实际的meta_key。
  • 代码可添加至主题的functions.php文件,或使用Code Snippets插件导入(更安全,避免主题更新丢失)。
  • 测试时输入完整/部分手机号,即可匹配到对应用户。

内容的提问来源于stack exchange,提问作者javitoor1001

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 01:22:17