奇怪的Switch_to_Blog()问题

时间:2014-10-28 作者:Chris

好吧,WordPress今天下午一直在毁灭我,我真的搞不懂这个问题。我们正在建立一个多站点网络,为了我们的特殊目的,需要在每个多站点之间循环以获取一些post数据等。

Test Case #1:

$sites = array ();

foreach(wp_get_sites() as $blog_details) {

    // switch to the blog
    switch_to_blog($blog_details[\'blog_id\']);

    // store the blog id & name
    $sites[$blog_details[\'blog_id\']] = get_bloginfo(\'name\');

    // restore the current blog
    // when coming out of the loop
    restore_current_blog();
}
我们正在遍历每个站点,根据ID切换到该博客,并将ID和名称存储为键=>值对,以供以后使用。在每次迭代结束时,我们将恢复最后一个博客。生成的数组如下所示-

Array
(
    [1] => Site 1
    [2] => Site 2
    [3] => Site 3
    [4] => Site 4
    [5] => Site 5
    [6] => Site 6
)
我已经看过了,可以确认ID和名称是正确的-太棒了!

Test Case #2:

foreach($sites as $blog_id => $name) {

    switch_to_blog($blog_id);

    $sites[$blog_id] = get_bloginfo(\'name\');

    restore_current_blog();
}
我们正在遍历生成的blog ID=>name值数组(如上所示),切换到适当的blog ID(我已经调试过,可以验证ID是否正确),然后根据现有数组设置检索到的blog名称。我们的新结果数组如下所示-

Array
(
    [1] => Site 1
    [2] => Site 1
    [3] => Site 1
    [4] => Site 1
    [5] => Site 1
    [6] => Site 1
)
它们现在都显示为站点1?!您可以看到这些键仍然正确,正如预期的那样。在使用switch_to_blog($blog_id) 方法,但无济于事。

这里真正的问题(不仅仅是测试用例)并不是我无法获取博客名称,所以请不要对获取多站点博客名称的其他调用提出建议,而是除了站点1之外,我无法查询任何多站点。

我真的希望有人能帮我解决这个问题!

1 个回复
最合适的回答,由SO网友:Pat J 整理而成

你可能会遇到WordPress的global$blog_id 测试用例#2中的变量。

尝试以下操作:

foreach($sites as $my_blog_id => $name) {

    switch_to_blog($my_blog_id);

    $sites[$my_blog_id] = get_bloginfo(\'name\');

    restore_current_blog();
}

结束

相关推荐

如何使用自定义错误处理程序捕获所有PHP错误?

我想知道是否有任何方法可以在不修改核心的情况下捕获Wordpress中的所有PHP错误(不仅仅是WP错误)?我这样问的原因是,我想手动捕获所有错误,并使用第三方软件作为错误聚合器,例如Sentry,但不限于例如,向他们发送电子邮件或登录到数据库。我知道Wordpress可以在调试模式下将错误记录到文件中,但这并不是我想要的,因为它很简单,而且有局限性。是的,我想捕捉Wordpress核心错误,如果有。不仅与插件/主题相关。[编辑]这是我的客户提出的要求-他们希望我能够监视他们拥有的任何应用程序中所有与PH