我正在尝试获取WordPress多站点安装上所有站点的所有主页ID的列表。我正在使用下面的代码来做到这一点。
$subsites = get_sites();
foreach ( $subsites as $site ) {
switch_to_blog( $site->blog_id );
$site_data = [
'id' => get_current_blog_id(),
'home_id' => get_option( 'page_on_front' )
];
restore_current_blog();
$sites[] = $site_data;
}
但是我使用get_option( 'page_on_front' )
得到了一些奇怪的结果。一些id返回为字符串,另一些返回为整数,另一些返回false。每个站点都分配有一个静态首页,并且各个站点设置下的“首页上的页面”选项的值确实已填写。关于为什么在尝试获取首页ID时会得到不同结果的任何想法?还是有get_option( 'page_on_front' )
选项以外的另一种查找ID的方法?
$ sites dump
array(11) {
[0]=>
array(2) {
["id"]=>
int(1)
["home_id"]=>
string(4) "1862"
}
[1]=>
array(2) {
["id"]=>
int(2)
["home_id"]=>
string(4) "2542"
}
[2]=>
array(2) {
["id"]=>
int(3)
["home_id"]=>
string(3) "905"
}
[3]=>
array(2) {
["id"]=>
int(4)
["home_id"]=>
int(1384)
}
[4]=>
array(2) {
["id"]=>
int(5)
["home_id"]=>
string(2) "13"
}
[5]=>
array(2) {
["id"]=>
int(6)
["home_id"]=>
string(4) "2885"
}
[6]=>
array(2) {
["id"]=>
int(7)
["home_id"]=>
bool(false)
}
[7]=>
array(2) {
["id"]=>
int(8)
["home_id"]=>
bool(false)
}
[8]=>
array(2) {
["id"]=>
int(9)
["home_id"]=>
int(7)
}
[9]=>
array(2) {
["id"]=>
int(10)
["home_id"]=>
string(1) "2"
}
[10]=>
array(2) {
["id"]=>
int(11)
["home_id"]=>
string(1) "5"
}
}