更新主站点用户时更新网络中的用户角色

时间:2011-08-09 作者:Pippin

我使用的是Multi Site User Management 插件可以让用户在多站点网络上保持同步,但有一个问题。在主站点上更新用户角色时,子站点上不会更新该角色。为了使一切正常工作,用户角色必须保持同步。

我一直在寻找,但没有成功,那么是否有一个在用户更新时运行的操作?我知道profile\\u update和wp\\u update\\u用户函数/挂钩,但这两个函数都不起作用,因为用户角色是通过外部函数更新的。因此,我需要一种始终同步用户角色的新方法。

有什么想法吗?

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

我找到了解决这个问题的办法。这不是一个“修复”,而是一种解决需要同步用户角色问题的方法。我没有尝试让所有用户角色匹配,而是决定只检查主站点的用户角色。请参见下面的我的函数,了解我是如何做到这一点的:

/*
* Function to check a specified user from a subsite against
* the role of that same user on the main site
*
* @param int $site_to_check the id of the site to check the user\'s role from
* @param int $user_id the user\'s id to check
*/
function cgc_check_for_citizen($site_to_check = 1, $user_id = null) {
    if(!isset($user_id)) {
        return false;
    }
    $citizen = false;

    global $blog_id;

    if($blog_id == 1) { // we\'re on the main site
        if(user_can($user_id, \'read_citizen\')) {
            $citizen = true;
        }
    } else {
        switch_to_blog($site_to_check);
            if(user_can($user_id, \'read_citizen\')) {
                $citizen = true;
            }
        restore_current_blog();
    }
    return $citizen;
}

SO网友:WPExplorer

我在想,如果你搞不懂,没人能弄明白;(

无论如何,这个插件会根据主站点自动更新子站点的用户角色。因此,您可以提取代码:

http://wordpress.org/extend/plugins/user-role-editor/

SO网友:PrivateUser

嗨,我不确定这个插件是否对你有帮助。但是试试看。试试scribu的proper-network-activation 插件

结束

相关推荐

使用WordPress MultiSite管理多个项目?

我目前在大多数项目中使用WordPress,我管理它们的方式是在本地环境中为每个项目创建一个文件夹,每个文件夹都包含一个WP安装,这有时会使其成为维护、升级的工具,并占用更多空间。我正在查看WP Multisite,我想知道是否可以使用它创建多个具有相同WP安装的项目,但遇到了一个问题,当我使用当前方法完成一个项目时,我只需向我的客户发送一个数据库的SQL转储,告诉他们替换URL并将所有文件/文件夹安装到他的服务器上,效果很好。但是WP Multisite创建了一个独特的文件夹和数据库结构,这使得它很难做