如何无需修改URL为WooCommerce wp-json/wc/v3/products端点添加自定义过滤?
解决WooCommerce REST API产品端点自动排除指定产品的问题
嗨,我来帮你搞定这个问题!你之前的代码思路是对的,但写法有个小问题,所以才没生效——你只是访问了$query_params['exclude'][10522]这个元素,但没有实际把产品ID添加到排除列表里。
修复后的代码
直接把这段代码放到你的主题(或子主题)的functions.php文件里就行:
function maximum_api_filter($query_params) { // 先确保exclude参数存在,避免数组未初始化报错 if (!isset($query_params['exclude'])) { $query_params['exclude'] = []; } // 添加要排除的产品ID到列表中 $query_params['exclude'][] = 10522; return $query_params; } add_filter('rest_product_collection_params', 'maximum_api_filter');
为什么这段代码能生效?
- 我们先检查
exclude参数是否已经存在于查询参数集合中,如果不存在就初始化一个空数组,防止直接操作不存在的数组抛出错误 - 用
[]把目标产品ID追加到exclude数组里,这样WooCommerce的REST API在处理请求时,会自动应用这个排除规则,不需要在URL里加任何额外参数 - 钩子
rest_product_collection_params是官方专门用来修改产品集合端点(也就是wp-json/wc/v3/products)查询参数的,完全符合你的需求场景
扩展:排除多个产品
如果之后需要排除多个产品,只需要继续追加ID即可:
$query_params['exclude'][] = 10522; $query_params['exclude'][] = 10600; $query_params['exclude'][] = 10755;
验证方法
保存代码后,直接访问wp-json/wc/v3/products,查看返回的JSON数据,确认ID为10522的产品已经不在结果里了。
内容的提问来源于stack exchange,提问作者RadicalM1nd
相关产品推荐
相关产品推荐

