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

如何在WordPress现有侧边栏搜索中添加用户/供应商自定义属性搜索

解决方案

步骤1:确认复选框参数可正常提交

先检查你新增的两个复选框是否符合以下规范,确保搜索时参数能被正常传递:

<label><input type="checkbox" name="vendor_type[]" value="individual"> 个人供应商</label>
<label><input type="checkbox" name="vendor_type[]" value="Pro"> 专业供应商</label>
  • 确保两个复选框的name属性为数组格式vendor_type[],只要你原来的ajax搜索逻辑是用serialize()方法序列化表单参数,新增的参数会自动被带入请求,不需要额外修改前端JS。

步骤2:添加搜索查询过滤逻辑

将以下代码添加到子主题的functions.php文件中,即可让复选框参数生效:

add_action('pre_get_posts', 'filter_products_by_vendor_type');
function filter_products_by_vendor_type($query) {
    // 仅对前台产品搜索主查询生效
    if (!is_admin() && $query->is_main_query() && (is_search() || $query->get('s')) && $query->get('post_type') === 'product') {
        // 检查是否有提交供应商类型参数
        if (isset($_GET['vendor_type']) && is_array($_GET['vendor_type']) && !empty($_GET['vendor_type'])) {
            // sanitize 输入参数
            $selected_types = array_map('sanitize_text_field', $_GET['vendor_type']);
            // 查询符合所选类型的供应商ID
            $vendor_ids = get_users([
                'meta_key' => 'vendor_type', // 此处替换为你数据库中存储供应商类型的实际meta_key
                'meta_value' => $selected_types,
                'meta_compare' => 'IN',
                'fields' => 'ID'
            ]);
            // 限制搜索结果仅为所选供应商发布的产品
            if (!empty($vendor_ids)) {
                $query->set('author__in', $vendor_ids);
            } else {
                // 没有匹配的供应商时返回空结果
                $query->set('post__in', [0]);
            }
        }
        // 未勾选任何供应商类型时不做限制,默认返回全部结果,无需额外处理
    }
}

注意事项

  • 代码中的vendor_type需要替换为你实际在usermeta表中存储用户供应商类型的meta键名,你之前已经查过数据库结构,直接替换成对应字段即可。
  • 如果你的主题使用自定义的ajax搜索处理接口(不是走默认的WordPress主查询),只需把上述查询供应商ID、给WP_Query添加author__in参数的逻辑,加到主题对应的ajax搜索处理函数中即可,逻辑完全一致。

内容的提问来源于stack exchange,提问作者Umer Farooq Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:54:00