多站点,通过URL共享内容

时间:2012-10-22 作者:Chris Haas

我有一个由两个站点组成的网络,A.example.comB.example.com. 我希望这样,如果我在A 具有永久链接/Widgets 我可以在上访问它B 使用相同的相对永久链接,但不必实际在上创建内容B. (一个站点有用户配置文件,我们希望继续在单个站点上管理,但也在另一个站点上公开。)地点B 仍然会“看起来”像B 但内容将来自A.

我在考虑init 但不知道该怎么办documentation 真的没有帮助。还是说pre_get_posts 只需更改我要查询的表前缀?

(我知道MS不适用于这种模式,我必须处理内容中的链接等影响,但这不是什么大问题。)

谢谢

[EDIT]

很抱歉/Widget 可能是个坏名字,这些不是Wordpress小部件,只是普通的帖子。

2 个回复
SO网友:Phantasmix

希望我能正确地理解你。不确定您的/小部件内容是实际的小部件,还是仅仅是帖子/页面,但我一直在使用此插件在多站点网络上的站点之间复制内容:http://wordpress.org/extend/plugins/diamond-multisite-widgets/

使用“网络广播”功能。您可以选择要在哪些网站上复制内容。2注意事项:

如果你在站点a上创建一篇文章,播放它,然后再次打开“广播”功能进行修改,它将在站点B上创建第二篇文章。换句话说,你不能播放更新。一旦文章被复制,它就与原文完全分离了

SO网友:Chris Haas

我最终选择了pre_get_posts.

add_action(\'pre_get_posts\', \'custom__pre_get_posts\');

function custom__pre_get_posts($query){
    //Get access to global variables
    global $blog_id;
    global $wp_query;

    //Make sure we\'re not in admin, only run on the main query and don\'t run on our primary site
    if($query->is_admin || !$query->is_main_query() || $blog_id===1){
      return;
    }

    //Try running the query
    $test_obj = $query->get_queried_object();

    //If we didn\'t get a result then the page wasn\'t found
    if(!$test_obj){
      //Switch to the main site
      switch_to_blog(1);
      //Reset the query using the same args as the original (the previous reset changes $wpdb)
      $wp_query = new WP_Query($query->query_vars);
      //Re-query the object again. We might need to perform more sanity checks here
      $test_obj = $query->get_queried_object();
      //Switch back to our current site
      restore_current_blog();
      //
    }else{
      //This is a normal query for a page that exists, we don\'t need to do anything
    }
}

结束

相关推荐

WP Multisite Static Frontpage

我创建了一个多站点,我的问题如下:我试图为每个新站点显示一个默认静态页面。因此,当他们创建一个新网站时,他们会自动获得我创建的默认页面。这是他们唯一需要并控制的页面。此页面中只有widgetized区域,因此站点管理员可以通过将小部件添加到小部件区域来添加内容。他们无权自己创建帖子或页面。通过在wp admin/includes/upgrade中添加一段代码。php每当创建一个新站点时,该页面将由WP自动创建。但是,页面没有连接到包含html/php代码的模板,以显示它们添加的小部件。通常在WP中,您可以