这可以通过插件来实现
通过分析和修改此类插件的代码,可以构建一个定制的、手工编码的解决方案。
正在搜索;multisite + widget"E;,我找到了一个感兴趣的插件。
在多站点设置中从另一个子站点获取帖子。您还可以将插件集成到主题文件中,非常有效。为功能使用提供快捷代码和小部件。国际化就绪。
似乎代码编写得很好,是最新的WordPress版本(3.4.2),可以解决index.php
问题(通过短代码)和小部件。
需要注意的是,每个站点都必须手动添加(每个站点1个短代码/小部件)
与插件一起使用的自定义短代码自动生成手动键入的短代码列表。
add_shortcode( \'blogs_posts\', \'wpse_72355_blogs_posts\' );
function wpse_72355_blogs_posts( $attr )
{
global $wpdb;
$blogs = $wpdb->get_results($wpdb->prepare("
SELECT blog_id
FROM {$wpdb->blogs}
WHERE site_id = \'{$wpdb->siteid}\'
AND spam = \'0\'
AND deleted = \'0\'
AND archived = \'0\'
AND mature = \'0\'
AND public = \'1\'
"));
$the_blogs_posts = \'\';
foreach ($blogs as $blog)
{
$details = get_blog_details( $blog->blog_id );
$the_blogs_posts .= \'From the site: <a href="\'
. $details->siteurl . \'">\'
. $details->blogname . \'</a><br>\';
$the_blogs_posts .= do_shortcode(
\'[multisite_posts no="\' . $attr[\'no\']
. \'" site_id="\' . $blog->blog_id . \'"]\'
);
}
return $the_blogs_posts;
}
foreach ($blogs as $blog)
可以适应这样的工作:
$original_blog_id = get_current_blog_id();
foreach ($blogs as $blog)
{
switch_to_blog( $blog->blog_id );
// http://codex.wordpress.org/Function_Reference/get_posts
$posts_array = get_posts( $args );
// Iterate through $posts_array and build the output
}
switch_to_blog( $original_blog_id );