在二十三个多站点上显示所有帖子

时间:2014-10-26 作者:Johan B

我在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中也找到孩子们的博客,我就会得到我想要的东西。我知道这将有更多需要解决的问题(例如分页),但这本质上就是我所追求的。

2 个回复
SO网友:Mark Kaplun

如果您正在寻找“easy”,那么最简单的方法可能是使用RSS小部件。获得两个小部件,每个博客一个,您就完成了。一旦你有了第三个博客,只需添加另一个小部件。

SO网友:Mark Kaplun

您不能在网络安装中循环查看所有最近的帖子。网络中的每个站点都与API一样,大多数用户界面都是一个完全独立的wordpress站点。这既是该系统的一个优点,也是一个缺点,但这意味着做任何混合来自不同网站的内容的事情都不是小事。

关键是功能switch_to_blogrestore_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();

结束

相关推荐

Multisite Widget/Content

我正在使用WordPress multisite,需要在侧边栏中显示所有子网站的内容。这是一个由50多个站点组成的网络,因此每隔几天用此内容更新所有50多个侧栏是不现实的。我找到的一个解决方案是简单地将我想要的内容插入侧边栏。虽然我不希望我的客户机编辑这个文件,但我希望他们使用TinyMCE编辑器而不是HTML。另一个想法是在每个子网站中嵌入一个iframe,让我的客户端更新iframe引用的页面。我的最后一个想法是用TinyMCE编辑器创建一个插件,将代码注入侧栏。php文件保存时,虽然我不知道插件是否

在二十三个多站点上显示所有帖子 - 小码农CODE - 行之有效找到问题解决它

在二十三个多站点上显示所有帖子

时间:2014-10-26 作者:Johan B

我在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中也找到孩子们的博客,我就会得到我想要的东西。我知道这将有更多需要解决的问题(例如分页),但这本质上就是我所追求的。

2 个回复
SO网友:Mark Kaplun

如果您正在寻找“easy”,那么最简单的方法可能是使用RSS小部件。获得两个小部件,每个博客一个,您就完成了。一旦你有了第三个博客,只需添加另一个小部件。

SO网友:Mark Kaplun

您不能在网络安装中循环查看所有最近的帖子。网络中的每个站点都与API一样,大多数用户界面都是一个完全独立的wordpress站点。这既是该系统的一个优点,也是一个缺点,但这意味着做任何混合来自不同网站的内容的事情都不是小事。

关键是功能switch_to_blogrestore_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();

相关推荐

Remove node from multisites?

我有一个如下所示的功能,其目标是从“我的网站”下拉列表中删除新帖子并管理评论。如果我将{$node\\u id}替换为blogs id,这会很好地工作。但我希望这适用于“我的站点”列表中的所有多站点。这意味着我需要获得所有的博客id。这是我已经取得的成就,但它不起作用。add_action( \'admin_bar_menu\', \'remove_nodes_from_mysites\', 999 ); function remove_nodes_from_mysites( $wp_admin_