You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

WordPress REST API无法获取10篇以上Products内容求解决方案

解决WordPress REST API无法获取10篇以上Products的问题

我之前也碰到过类似的WP REST API自定义文章类型分页限制问题,结合你的尝试,给你几个关键的排查和修复方向:

1. 先修正请求参数的格式错误

你之前尝试的请求链接里有一个明显的低级错误:出现了两个问号?,比如:

https://cnperformance.wpengine.com/wp-json/wp/v2/products?_embed&?filter[per_page]=-1

URL里只能有一个?作为参数起始符,后续所有参数都要用&连接,正确的格式应该是:

https://cnperformance.wpengine.com/wp-json/wp/v2/products?_embed&filter[per_page]=100

或者直接使用WP REST API原生的per_page参数(不需要依赖filter插件):

https://cnperformance.wpengine.com/wp-json/wp/v2/products?_embed&per_page=100

2. 调整REST API的per_page最大限制(更可靠的写法)

你之前的代码是移除maximum限制,但有时候WordPress核心会保留兜底限制,建议直接设置一个明确的最大值,比如允许最多100条:

add_filter( 'rest_endpoints', function( $endpoints ){
    if ( isset( $endpoints['/wp/v2/products'] ) ) {
        // 把最大请求数量设置为你需要的数值,比如100
        $endpoints['/wp/v2/products'][0]['args']['per_page']['maximum'] = 100;
    }
    return $endpoints;
});

注意:不要用-1,WP REST API并不支持用-1获取所有内容,核心会把它当作无效值,自动 fallback 到默认的10条。

3. 确认Products自定义文章类型的REST配置

有些主题或插件注册products自定义文章类型时,可能没有正确开启REST支持,导致参数不生效。检查你的products注册代码,确保包含以下配置:

register_post_type( 'products', array(
    // 其他必填参数(标签、支持功能等)...
    'show_in_rest' => true,
    'rest_base' => 'products',
    'rest_controller_class' => 'WP_REST_Posts_Controller',
) );

如果是用电商插件(比如WooCommerce)创建的products,确保插件的REST API功能是开启的,并且没有被其他设置限制。

4. 排查插件冲突

除了「WP REST API filter parameter」,暂时禁用其他插件(比如缓存插件、安全插件)测试:有些安全插件会限制REST API的请求数量防止恶意爬取;缓存插件也可能缓存了旧的请求结果,导致新参数不生效。

5. 直接使用原生参数替代filter插件

其实WP REST API v2本身就支持per_page参数,不需要依赖「WP REST API filter parameter」插件,只要你已经通过代码调整了per_page的最大限制,直接用&per_page=100就能生效。

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

火山引擎 最新活动