多站点基本问题-集中管理内容

时间:2012-05-31 作者:Ray Mitchell

是否可以集中管理多站点安装上的内容?如果我有一个由20个站点组成的网络,是否可以更改一个站点上的内容并在整个网络中进行更新,或者我是否必须每次在每个站点上进行一次更改?更具体的情况是,如果我有一个必须出现在每个站点上的条款和条件页面,需要定期更改,那么我可以进行一次更改并进行复制。

如有任何有效管理该流程的建议/指示/资源,将不胜感激。

3 个回复
最合适的回答,由SO网友:davemac 整理而成

我成功地使用了ThreeWP Broadcast 在WPMU安装上执行此操作的插件。

基本概念是,您有一个“广播”站点,您可以从该站点向其他站点广播内容。内容可以是帖子、页面、自定义帖子类型、自定义分类法、帖子元或附件。

如果在“广播”网站上更新内容,则更新将反映在其他网站上。更多信息可以在上面链接的ThreeWP Broadcast WP Plugin目录条目中找到。

SO网友:Bainternet

我遇到了一个类似的问题,我需要内容在“网络范围”内可用,并从一个位置(主站点)进行管理,因此我在主站点创建了一个名为“共享内容”的自定义帖子类型,以及一个从主站点提取内容的小快捷码。

这是它的“一个版本”,但不是测试版,因为我无法访问我当时使用的工作解决方案,但它应该可以正常工作:

<?php
/*
Plugin Name: WPMU Shared Content
Plugin URI: http://en.bainternet.info
Description: This plugin lets you create and manage content on the main MU installation and shared it accros you network
Version: 0.1
Author: Bainternet
License:

  Copyright 2012 Bainternet ([email protected])

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License, version 2, as 
  published by the Free Software Foundation.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/
/* Disallow direct access to the plugin file */
if (basename($_SERVER[\'PHP_SELF\']) == basename (__FILE__)) {
        die(\'Sorry, but you cannot access this page directly.\');
}

if (!class_exists(\'wpmu_shared_content\')){

        /**
        * wpmu_shared_content
        */
        class wpmu_shared_content
        {

                static $main_site_id;
                static $current;


                //class constructor
                public function __construct($main_id = 1);
                {
                        global $blog_id;
                        $this->main_site_id = $main_id
                        $this->current =  $blog_id;
                        //only register the post type to the main side
                        if (is_main_site($this->main_site_id) && is_super_admin())  
                                add_action( \'init\', array($this,\'register_shared_content\' ));

                        add_shortcode(\'sh\',array($this,\'load_shared_content\'));
                        add_shortcode(\'SH\',array($this,\'load_shared_content\'));
                }

                //register custom post type shared content
                public function register_shared_content() {
                        $labels = array( 
                                \'name\' => _x( \'Shared Content\', \'shared_content\' ),
                                \'singular_name\' => _x( \'shared_content\', \'shared_content\' ),
                                \'add_new\' => _x( \'Add New\', \'shared_content\' ),
                                \'add_new_item\' => _x( \'Add New shared_content\', \'shared_content\' ),
                                \'edit_item\' => _x( \'Edit shared_content\', \'shared_content\' ),
                                \'new_item\' => _x( \'New shared_content\', \'shared_content\' ),
                                \'view_item\' => _x( \'View shared_content\', \'shared_content\' ),
                                \'search_items\' => _x( \'Search Shared Content\', \'shared_content\' ),
                                \'not_found\' => _x( \'No shared content found\', \'shared_content\' ),
                                \'not_found_in_trash\' => _x( \'No shared content found in Trash\', \'shared_content\' ),
                                \'parent_item_colon\' => _x( \'Parent shared_content:\', \'shared_content\' ),
                                \'menu_name\' => _x( \'Shared Content\', \'shared_content\' ),
                        );

                        $args = array( 
                                \'labels\' => $labels,
                                \'hierarchical\' => false,
                                \'description\' => \'Content to be shared with all sites but managed form main installation only.\',
                                \'supports\' => array( \'title\', \'editor\', \'thumbnail\', \'custom-fields\' ),

                                \'public\' => true,
                                \'show_ui\' => true,
                                \'show_in_menu\' => true,

                                \'menu_icon\' => \'http://i.imgur.com/LI2B6.png\',
                                \'show_in_nav_menus\' => true,
                                \'publicly_queryable\' => false,
                                \'exclude_from_search\' => false,
                                \'has_archive\' => false,
                                \'query_var\' => false,
                                \'can_export\' => true,
                                \'rewrite\' => false,
                                \'capability_type\' => \'post\'
                        );
                        register_post_type( \'shared_content\', $args );
                }

                //shortcode handler
                public function load_shared_content($atts,$content=null){
                        extract(shortcode_atts(
                                array(\'id\' => 0),
                        $atts));
                        $retVal = "";
                        if ($id <= 0)
                                return $retval;

                        $shared_content = get_blog_post($this->main_site_id,$id);
                        $retVal = apply_filters(\'the_content\',$shared_contents[\'post_content\']);
                        return $retVal;
                }

        }//end class
}//end if

if (is_multisite())
        new wpmu_shared_content(apply_filters(\'wpmu_shared_content_main_site_id\', 1));

/**
 * Usage:  [sh id="3"] or [SH id= 3]
 */

SO网友:Dan Gayle

贝内特和达维马克的回答很好,如果不是有点严厉的话。我有一个类似的情况,我有5个博客在运行,其中一个“主”博客保留了所有的全球使用条款和隐私政策。我是这样做的:

在你的主博客中,创建你的页面,然后设置一个名为“全局”的导航菜单,其中包含你想要全局共享的所有页面。

将以下代码添加到主题中,无论您想在哪里显示全局导航:

if (is_multisite()) switch_to_blog(1); //if the global blog is #1
wp_nav_menu( array( \'theme_location\' => \'global\' ) );
restore_current_blog();
如果您需要小部件形式的代码,也可以将上述代码添加到小部件中。

结束

相关推荐

在MultiSite中的循环外部获取_Author_meta的$user_id

因此,我目前正在运行一个多站点安装,超级管理员将创建所有新站点。我们使用的其中一个模板有一个贷款官员的博客页面。我正在扩展用户配置文件,以便新用户可以输入需要在其页面上显示的关键数据。除了创建站点时自动添加的超级管理员之外,每个站点只有一个用户。我发现,如果要使用该函数,需要指定用户IDthe_author_meta(); 循环外部。这是我的问题。我无法在模板中输入ID,因为每个新的贷款官员都将使用相同的主题模板。那么,如何使这些字段成为动态的呢?下面是配置文件部分的图像,以便LO在视觉上有所帮