在 wordpress 中为多个站点创建编辑器

     2023-03-14     66

关键词:

【中文标题】在 wordpress 中为多个站点创建编辑器【英文标题】:Creating a editor for multiple sites in wordpress 【发布时间】:2014-06-30 16:32:46 【问题描述】:

在 Wordpress 多站点平台上,通常如果我创建“编辑”用户帐户,该用户只能对正在创建的站点执行职责。

但是我想创建一个特殊的编辑帐户,可以在所有站点(多个站点)上执行编辑职责

谁能指导我如何创建这样的用户?

【问题讨论】:

【参考方案1】:

我认为您可以使用插件Multisite user management 做您需要的事情。这应该允许您将用户和角色复制到所需的站点...或者您可以创建一个新的管理员帐户。

【讨论】:

【参考方案2】:

我正在检查来自Felipe's answer 的多站点用户管理插件的代码,并决定进行概念验证。

以下仅限网络的插件添加了以下选项:

当我们在下拉列表中选择一个用户并更新设置时,该用户被添加为网络的所有站点中的编辑器。 创建新网站时,也会添加此用户。

重要提示:

noundo功能,更新设置后,您只能逐个站点删除/更改用户。李>
<?php
/*
Plugin Name: (SO) Multisite Super Editor
Plugin URI: https://***.com/q/23623835/1287812
Description: Add a user as Editor in all sites of the network
Author: brasofilo
Network: true
Version: 1.0
*/
B5F_Multisite_Super_Editor::init();

class B5F_Multisite_Super_Editor 

    static $option = 'super_editor';

    static function init() 
    
        add_action( 'wpmu_new_blog', array( __CLASS__, 'new_site'), 10, 6 );
        add_action( 'wpmu_options', array( __CLASS__, 'options_network' ) );
        add_action( 'update_wpmu_options', array( __CLASS__, 'options_update' ) );
    

    /**
     * Add Super Editor to newly created blogs
     */
    static function new_site( $blog_id, $user_id, $domain, $path, $site_id, $meta )
    
        $saved =  get_site_option( self::$option );
        add_user_to_blog( $blog_id, $saved, 'editor' );
    

    /**
     * Outputs the user selection on the 'Network Admin | Settings' page. 
     */
    static function options_network()
    
        echo '<h3>' . __( 'Super Editor' ). '</h3>';
        $users = get_users();
        $supers = get_site_option( 'site_admins', array('admin') );
        $saved =  get_site_option( self::$option );
        $selected = $saved ? $saved : '';
        $exclude = array();

        // site_admins only has the user_login, hence this loop to get the IDs
        foreach( $users as $user )
            if( in_array( $user->data->user_login, $supers ) )
                $exclude[] = $user->data->ID;

        wp_dropdown_users( array( 
            'blog_id' => 0, // Default is current blog
            'exclude' => $exclude, 
            'name' => 'post_author', 
            'multi' => true, 
            'show_option_none' => __('None'), 
            'name' => 'b5f_default_user_role', 
            'selected' => $selected 
        ));
    

    /**
     * UPDATE Super Editor option and APPLY the role in all sites
     */
    static function options_update()
    
        if( !isset( $_POST[ 'b5f_default_user_role' ] ) )
            return;

        $user_id = $_POST[ 'b5f_default_user_role' ];
        $saved =  get_site_option( self::$option );
        if( $saved == $user_id )
            return;

        update_site_option( self::$option, $user_id );  
        foreach( self::get_blogs( 0, 'all' ) as $key => $blog ) 
            add_user_to_blog( $blog[ 'blog_id' ], $user_id, 'editor' );
    

    /**
     * Based on the deprecated WPMU get_blog_list function. 
     * 
     * Except this function gets all blogs, even if they are marked as mature and private.
     */
    static function get_blogs( $start = 0, $num = 10 ) 
    
        global $wpdb;

        $blogs = $wpdb->get_results( $wpdb->prepare( "SELECT blog_id, domain, path FROM $wpdb->blogs WHERE site_id = %d AND archived = '0' AND spam = '0' AND deleted = '0' ORDER BY registered DESC", $wpdb->siteid ), ARRAY_A );

        foreach ( (array) $blogs as $details ) 
            $blog_list[ $details[ 'blog_id' ] ] = $details;
            $blog_list[ $details[ 'blog_id' ] ]['postcount'] = $wpdb->get_var( "SELECT COUNT(ID) FROM " . $wpdb->get_blog_prefix( $details['blog_id'] ). "posts WHERE post_status='publish' AND post_type='post'" );
        
        unset( $blogs );
        $blogs = $blog_list;

        if ( false == is_array( $blogs ) )
            return array();

        if ( $num == 'all' )
            return array_slice( $blogs, $start, count( $blogs ) );
        else
            return array_slice( $blogs, $start, $num );
    

【讨论】:

Wordpress 多站点错误

】Wordpress多站点错误【英文标题】:WordpressMultisiteerror【发布时间】:2014-10-1307:58:54【问题描述】:我想在单个WordPress安装上创建多个站点,每个站点都位于不同的目录中。我尝试添加一个新网站,填写所需信息:站点地址:loca... 查看详情

怎样在一个服务器上安装多个wordpress

1、先安装护卫神.主机大师,一键安装IIS+PHP+MYSQL+FTP2、用主机大师安装开设多个站点和对应的MYSQL3、每个站点分别上传WP程序,进行安装参考技术A这个简单可以在一台主机上创建多个虚拟主机来实现 查看详情

在 wordpress 站点中编辑/删除数据表行

】在wordpress站点中编辑/删除数据表行【英文标题】:Editing/deletingdatatablerowsinwordpresssite【发布时间】:2017-11-2715:10:20【问题描述】:我真的很紧张......我的任务是让这个网站上的数据表可编辑。基本上,每一行都需要有一个编辑... 查看详情

如何在wordpress中为帖子创建自定义属性[关闭]

】如何在wordpress中为帖子创建自定义属性[关闭]【英文标题】:Howtocreatecustomattributeforpostinwordpress[closed]【发布时间】:2021-10-2119:23:36【问题描述】:我需要一些自定义属性用于wordpress中的帖子,我正在创建一个过滤功能,当任何... 查看详情

在 Doc Root 中为 Wordpress 创建自定义 PHP 页面 [重复]

】在DocRoot中为Wordpress创建自定义PHP页面[重复]【英文标题】:CreateCustomPHPPageforWordpressinDocRoot[duplicate]【发布时间】:2017-05-0704:06:39【问题描述】:我遇到了麻烦,我对Wordpress开发还很陌生,我正在尝试在我的public_html中创建一个... 查看详情

如何在站点配置中为相同的根页面 ID 配置多个域?

】如何在站点配置中为相同的根页面ID配置多个域?【英文标题】:HowtoconfiguremultipledomainsforsameRootPageIDwithinSiteConfiguration?【发布时间】:2020-10-1515:45:58【问题描述】:我有一个可以被多个域访问的根页面。这些域是别名(没有变... 查看详情

在 Wordpress Datewise 中为特定类别创建存档

】在WordpressDatewise中为特定类别创建存档【英文标题】:CreatingaArchiveinWordpressDatewiseforaParticularCategory【发布时间】:2009-12-0806:10:08【问题描述】:在我的网站中,我想添加一个存档页面或自定义页面,我想在其中显示来自特定类... 查看详情

如何在 Wordpress 多站点安装 (3.0) 中同时查询所有博客选项表?

】如何在Wordpress多站点安装(3.0)中同时查询所有博客选项表?【英文标题】:HowcanIsimultaneouslyqueryallblogoptionstableinaWordpressmultisiteinstallation(3.0)?【发布时间】:2011-04-1813:37:42【问题描述】:在我们的Wordpress3.0多站点安装中,我们为... 查看详情

WordPress 编辑器未更新文件:无法与站点通信以检查致命错误

】WordPress编辑器未更新文件:无法与站点通信以检查致命错误【英文标题】:WordPressEditornotupdatingfiles:Unabletocommunicatebackwithsitetocheckforfatalerrors【发布时间】:2019-03-1107:03:28【问题描述】:各位开发者和问题解决者您好。我在更新... 查看详情

Wordpress 5.4 主题编辑器适用于 LOCALHOST 但不适用于 LIVE 主题编辑器站点

】Wordpress5.4主题编辑器适用于LOCALHOST但不适用于LIVE主题编辑器站点【英文标题】:Wordpress5.4ThemeEditorworksonLOCAHOSTbutnotontheLIVEthemeeditorsite【发布时间】:2020-08-1307:26:31【问题描述】:我遇到了一个奇怪的情况,我可以使用主题编辑... 查看详情

nginx位置正则表达式来处理/sub/目录中多个wordpress站点的永久链接(代码片段)

...在寻找一个动态的解决方案来处理安装在子目录中的多个WordPress站点(节点)的相当永久链接。可以使用这样的URL访问这些站点(我使用cluster和node来表示结构,但它们对于每种情况都不同,但它们始终遵循相同的结构,节点是... 查看详情

如何在 wamp 中使用多个 wordpress 网站?

】如何在wamp中使用多个wordpress网站?【英文标题】:Howtousemultiplewordpresswebsitesinwamp?【发布时间】:2017-12-2918:22:33【问题描述】:我安装了Wamp并且已经在localhost中开发了一个Wordpress站点。但是我想在Wamp服务器localhost中设置另一... 查看详情

如何在 WordPress 中为致命错误处理程序 (WSoD) 设置通知电子邮件

】如何在WordPress中为致命错误处理程序(WSoD)设置通知电子邮件【英文标题】:HowtoSetNotificationEmailinWordPressforFatalErrorHandler(WSoD)【发布时间】:2021-03-2211:11:05【问题描述】:WordPress5.2集成了WSoD保护,默认情况下,当站点遇到一些致... 查看详情

XAMPP 上的多个 WordPress 站点

】XAMPP上的多个WordPress站点【英文标题】:MultipleWordPressSitesonXAMPP【发布时间】:2014-11-1317:14:46【问题描述】:好的,我知道这已经回答了几次,但据我所知,所有答案现在都已过时。Bitnami发布了一个新的安装程序。它没有安装... 查看详情

在 wordpress 中为现有的 html 表(使用数据库连接)使用数据表

】在wordpress中为现有的html表(使用数据库连接)使用数据表【英文标题】:Usingdatatableforexistinghtmltable(usingdatabaseconnection)inwordpress【发布时间】:2017-10-1813:03:46【问题描述】:我目前有一个WordPress站点,其中的一个部分包含一个... 查看详情

在 Wordpress 中为自定义帖子类型添加附加页面

】在Wordpress中为自定义帖子类型添加附加页面【英文标题】:AddingadditionalpagesforaCustomPostTypeinWordpress【发布时间】:2015-10-0417:40:09【问题描述】:我创建了一个名为“课程”的自定义帖子类型。Wordpress会自动为“课程”添加以下... 查看详情

在 localhost xampp 中更改 wordpress 地址和站点地址后,它不再工作

】在localhostxampp中更改wordpress地址和站点地址后,它不再工作【英文标题】:afterchangingthewordpressadressandsiteaddressinlocalhostxamppthenitnotworkinganymore【发布时间】:2016-09-3002:44:56【问题描述】:我是使用wordpress创建网站的新手。我正在... 查看详情

如何在wordpress中为子类别应用父类别模板?

】如何在wordpress中为子类别应用父类别模板?【英文标题】:Howtoapplyparentcategorytemplateforchildcategoryinwordpress?【发布时间】:2019-10-1018:51:54【问题描述】:我尝试为指定类别构建自定义模板,我的类别是新闻,我创建了一个名称为... 查看详情