在我的根博客(1)中,我有一个自定义的帖子类型,可以链接到我网络中的现有博客。它通过在post metas中记录链接到的博客的ID来实现。我使用_blog_id
作为此数据的名称。
在这个根博客的一个页面中,我列出了这些自定义帖子,并轻松检索了我保存的元数据:
<?php while ( have_posts() ) : the_post();
$blog_id = get_post_meta(get_the_id(), \'_blog_id\', true);
现在,我有了我想从中获取信息的博客的ID,所以我尝试以下方法:
switch_to_blog($blog_id);
$blog_url = get_bloginfo(\'url\');
restore_current_blog();
不幸的是,这不起作用,因为
$blog_url
具有根博客的URL。
更糟的是:switch_to_blog()
有效但无效restore_current_blog()
, 因为对循环函数的后续调用现在在子博客中工作。例如,调用时the_post_thumbnails()
, 图片来源为“/上传/站点/2014年2月…”当我在根站点时。
As you could guess, i have two questions:
- How to retreive blog info of another blog in the network, from the template of a blog?
- Why does
switch_to_blog()
, followed by restore_current_blog()
makes the LOOP functions to behave incorrectly?谢谢大家!祝你周末愉快!
最合适的回答,由SO网友:Ninj 整理而成
@帕特·J:谢谢你的回答。作为一名老开发人员,这是我的第一个反射,我禁用了插件,甚至自定义函数。没有任何帮助。我忘了说出来。
But i found the solution, 这很愚蠢,读一下:
$blog_id
在循环中(或通常在模板中)以某种方式使用,因此您永远不应该分配此变量。$blog_id
is a reserved variable in template! 现在我会记住;)
所发生的是,通过改变$blog_id
\'s值时,后续的助手函数调用在错误的博客上工作,因此使用了错误的上载文件夹。
它还解决了我的第一个问题:network_site_url($sub_blog_id)
根据需要提供一个外国博客的URL。这个$blog_id
bug也影响了这种行为。
希望这有帮助!