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

WordPress多站点get_sites()仅返回前99个站点的问题求助

嘿,这个情况我在维护大型WordPress多站点的时候碰过好多次!

为什么get_sites()只返回前99个站点?

这其实是WordPress的默认参数限制搞的鬼:

  • get_sites()函数自带一个number参数,默认值就是99。WordPress这么设计是为了避免一次性拉取过多站点数据,防止服务器因为处理大量查询而变慢,算是一种性能保护机制。
  • 当你的站点总数超过99时,函数会自动启用分页逻辑,只返回第一页的99条结果,剩下的站点需要通过调整参数才能获取到。
解决方法:调整get_sites()的参数

你有两种靠谱的方式拿到所有站点:

1. 直接设置number为-1获取全部

如果你的服务器性能足够,直接把number参数设为-1就能一次性拿到所有站点:

$all_sites = get_sites( array( 'number' => -1 ) );
print_r( array_values( $all_sites ) );

⚠️ 注意:如果站点数量特别多(比如上千个),这种方式可能会占用较多内存,建议先测试一下性能再投入使用。

2. 分页循环分批获取(更稳妥)

要是担心全量查询拖慢服务器,可以用分页循环的方式分批拉取:

$all_sites = array();
$current_page = 1;
$sites_per_page = 100; // 可以根据服务器性能调整这个数值

while ( true ) {
    $batch_sites = get_sites( array(
        'number' => $sites_per_page,
        'offset' => ( $current_page - 1 ) * $sites_per_page
    ) );
    
    if ( empty( $batch_sites ) ) {
        break; // 没有更多站点了,退出循环
    }
    
    $all_sites = array_merge( $all_sites, $batch_sites );
    $current_page++;
}

print_r( array_values( $all_sites ) );

这种方式每次只拉取固定数量的站点,能有效降低单次查询的资源消耗,适合超大型多站点环境。

至于你提到的插件只显示前99个站点,大概率是插件开发者没处理这个默认限制——他们直接调用了get_sites()而没修改number参数。你可以给插件作者提个issue,或者自己动手修改插件里调用get_sites()的代码,把参数改成上面提到的两种方式之一就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:19:34