我在wordpress 4.0网站上使用默认的213。我现在在网络中有一个站点。明年左右我可能会增加一到两个。两个博客都使用了213。目前,“主要”博客只循环发布自己的帖子。我希望它包括儿童博客。有什么好办法吗?当我将博客添加到网络时,如果我必须手动修改代码,这并不重要,因为我不会经常这样做。
编辑:我希望帖子像主博客中的帖子一样出现在主内容区域。使用与Twenty13相同的默认样式。
编辑2:澄清。第二十三个主题的索引中有“循环”。php。
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( \'content\', get_post_format() ); ?>
<?php endwhile; ?>
如果我能在while-loop中也找到孩子们的博客,我就会得到我想要的东西。我知道这将有更多需要解决的问题(例如分页),但这本质上就是我所追求的。
SO网友:Mark Kaplun
您不能在网络安装中循环查看所有最近的帖子。网络中的每个站点都与API一样,大多数用户界面都是一个完全独立的wordpress站点。这既是该系统的一个优点,也是一个缺点,但这意味着做任何混合来自不同网站的内容的事情都不是小事。
关键是功能switch_to_blog 和restore_current_blog 使您能够在不同博客的上下文中使用wordpress API
因为你想让你的帖子按时间顺序显示,你首先需要在所有网站上创建一个最近所有帖子的列表,比如
$blogs_to_fetch = array( the blog ids of the blogs);
$posts = array();
// first we collect data
foreach ($blogs_to_fetch as $blogid) {
switch_to_blog($blogid);
$ps = get_posts(parameters to get N latest posts);
foreach $ps as $p) {
$posts[] = array(\'blogid\' => $blogid, \'post\' => $post);
}
restore_current_blog(); // not realy needed, but nicer to the eye
}
$posts = sort_posts($posts); // your own function that sorts the posts by time or by any other creiteria
// now we display
foreach ($posts as $p) {
switch_to_blog($p[\'blogid\']);
setup_postdata( $p );
get_template_part( \'content\', get_post_format() );
restore_current_blog();
}
// cleanup
wp_reset_postdata();