我正在使用最新的API v2。虽然min_price
,category
等其他过滤器正在运行,但attribute
和attribute_terms
查询参数不会过滤结果集。
我有一个属性Color
,我从node.js客户端调用API为:
var WooCommerceAPI = require('woocommerce-api');
var WooCommerce = new WooCommerceAPI({
url: 'http://localhost/index.php',
consumerKey: '***',
consumerSecret: '***',
wpAPI: true,
version: 'wc/v2'
});
WooCommerce.getAsync('products?attribute=pa_color').then(function(result){
var data = JSON.parse(result.toJSON().body);
console.log(data);
});
如何按属性进行实际过滤?试过其他组合e,g。 attribute=Color
,attribute=color
。结果仍然没有过滤。
答案 0 :(得分:2)
查看最新的WooCommerce REST API文档:http://woocommerce.github.io/woocommerce-rest-api-docs/#list-all-products
WooCommerce似乎有一个糟糕的REST API历史。他们有API V1,V2和V3,然后改为WP REST API并创建了V1和V2。当然,在Google上搜索正确的方法可能会很糟糕。
这应该是正确的方法:
https://example.com/wp-json/wc/v2/products/?attribute=pa_color&attribute_term=15
或
https://example.com/wp-json/wc/v2/products/?attribute=pa_color&attribute_term=green
注意: 将属性TOGETHER与attribute_term一起使用非常重要。
我想以前做这件事的方式是这样的:
products?filter[meta_key]=pa_color&filter[meta_value]=green
或者像这样:
https://example.com/wp-json/wc/v2/products?attribute[pa_color]=green
但似乎 这在WooCommerce WordPress API V2中不再起作用 。
答案 1 :(得分:0)
我找到了解决方案。正确的方法:
products?attribute=pa_color&attribute_term=50
您必须使用属性字词ID替换属性字词的名称。为我工作。
P.S。我正在使用最新版本的wc / v2。