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

WooCommerce REST API多属性商品筛选失效问题求助

解决WooCommerce REST API多属性筛选问题

你遇到的问题是因为重复使用同名查询参数时,会被最后一个值覆盖。WooCommerce API支持用数组格式的参数来传递多组属性筛选条件,具体用法如下:

正确的API调用格式

使用attribute[]和attribute_term[]作为参数名,每个属性对应一组键值对:

GET /wp-json/wc/v3/products?attribute[]=attribute1&attribute_term[]=value1&attribute[]=attribute2&attribute_term[]=value2

这种格式下,API会将每个attribute[]与对应的attribute_term[]按顺序关联,实现同时匹配多个属性的筛选逻辑。

如果数组参数不生效的替代方案

如果你的WooCommerce版本不支持上述数组参数格式,可以通过自定义REST端点实现需求:

在WordPress主题的functions.php中添加以下代码,注册一个支持多属性筛选的自定义端点:

add_action('rest_api_init', function () {
    register_rest_route('custom/v1', '/filtered-products', [
        'methods' => 'GET',
        'callback' => 'wc_multi_attr_filter',
        'permission_callback' => function () {
            // 可根据需求添加权限验证,比如检查API密钥或用户权限
            return current_user_can('manage_woocommerce');
        }
    ]);
});

function wc_multi_attr_filter($request) {
    $attrs = $request->get_param('attrs');
    if (!is_array($attrs)) {
        return rest_ensure_response([]);
    }

    $tax_query = ['relation' => 'AND'];
    foreach ($attrs as $slug => $term) {
        // WooCommerce产品属性的分类名前缀是pa_
        $taxonomy = 'pa_' . sanitize_title($slug);
        $tax_query[] = [
            'taxonomy' => $taxonomy,
            'field' => 'slug',
            'terms' => sanitize_title($term)
        ];
    }

    $query = new WP_Query([
        'post_type' => 'product',
        'posts_per_page' => 10, // 可按需调整每页返回数量
        'tax_query' => $tax_query,
        'post_status' => 'publish'
    ]);

    $products = [];
    foreach ($query->posts as $post) {
        $product = wc_get_product($post->ID);
        $products[] = $product->get_data(); // 返回完整产品数据,可按需筛选特定字段
    }

    return rest_ensure_response($products);
}

调用自定义端点示例

GET /wp-json/custom/v1/filtered-products?attrs[attribute1]=value1&attrs[attribute2]=value2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:15:16