如何在WordPress多站点设置中显示来自其他站点的文章?

12
我使用 WordPress 3.0 的多站点功能搭建了一小组网站。我想创建另一个网站,从其他各个站点中提取特定的帖子进行展示。这个新的“中心”网站对用户来说看起来像是一个独立的网站(使用域名映射),但其内容来自其他站点的文章。
在 WordPress 多站点设置中,如何获取其他站点的文章?我可以根据站点名称查询文章吗?最终结果需要是按日期排序的来自不同站点的文章集合。
谢谢您的帮助。
2个回答

18

我遇到了类似的问题,我想从一个博客获取文章并在另一个博客上显示它。我想出了以下解决方案,如果需要,您可以稍微修改它以满足您的需求。

<?php
global $switched;
switch_to_blog(2); //switched to 2

// Get latest Post
$latest_posts = get_posts('category=-3&numberposts=6&orderby=post_name&order=DSC');
$cnt =0;?> 
<ul>
    <?php foreach($latest_posts as $post) : setup_postdata($post);?>
    <li>
        <a href="<?php echo get_page_link($post->ID); ?>" title="<?php echo $post->post_title; ?>"><?php echo  short_title('...', 7); ?></a>
    </li>                                
    <?php endforeach ; ?>

<?php restore_current_blog(); //switched back to main site ?>

我还限制了输出的单词数量,如果您不想使用此功能,只需

$post->post_title; 

希望这能有所帮助。


还应该阅读get_posts文档;那里也有一些很好的例子。请查看示例部分。 - mhulse
不知道[http://codex.wordpress.org/WPMU_Functions/switch_to_blog] switch_to_blog(),谢谢。 - bjoster
仅供记录,这里不需要 global $switched;,它只有在您想检查 switch_to_blog()restore_current_blog() 是否发生时才有用。 - Steven

2
这不需要通过直接调用数据库来设置。您可以使用$wpdb对象从安装中的任何站点查询帖子。有关使用自定义数据库查询的信息,请参见使用自定义选择查询显示帖子,但请记住,您需要访问要获取帖子的特定站点表,而不是从$wpdb->posts进行选择。在默认的WordPress 3安装中,这将是wp_12_posts,其中12是站点ID。可以在wp_blogs表中找到该ID,或者通过查看管理菜单中的“站点”部分中的ID列来找到它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接