如何跨多站点同步角色?

时间:2013-03-21 作者:webvitaly

如果主站点上的角色发生更改,如何同步多站点网络中所有站点上的角色?

1 个回复
SO网友:brasofilo

有一个动作钩在set_role 作用

这是一个检测主站点中是否发生这种情况的问题,如果发生,则获取用户的所有博客并更改所有角色。更多详细信息请参见代码注释。

add_action( \'set_user_role\', \'sync_user_roles_wpse_91745\', 10, 2 );

function sync_user_roles_wpse_91745( $user_id, $role )
{
    // is_multisite() used just as precaution, this code is meant to Multisite only
    if( !is_multisite() || !is_main_site() )
        return;

    // Initial data
    $blogs = get_blogs_of_user( $user_id );
    $original_blog_id = get_current_blog_id();

    // Remove main site from affected sites
    unset( $blogs[ $original_blog_id ] );

    // Iterate through blogs of user
    foreach ( $blogs as $blog ) 
    {
        // Work with another site
        switch_to_blog( $blog->userblog_id );

        // Grab all user info and update role as in main site
        $site_user = get_user_by( \'id\', $user_id );
        $site_user->set_role( $role );
    }

    // Back to original main site
    switch_to_blog( $original_blog_id );    
}
我不知道,但在整个网络中,用户ID在表中保持不变wp_userswp_{$site_id}_users.

结束

相关推荐

正在尝试在WordPress MultiSite中输出“访问次数最多的博客”列表

有人知道如何从Wordpress Multisite中获得“访问量最大”的列表吗?我有很多博客,一直在寻找一种方法来输出前10/20个访问量最大的博客列表,但找不到任何插件或代码片段。示例-如本网站右侧的列表(非WP)http://blogg.se/