WordPress多用户注册网站

时间:2013-02-01 作者:rwzdoorn

我们目前正在为我们的一个客户创建一个(移动)新闻应用程序,其中包括其WP multisite的博客。我们在DB之间建立了REST连接,但遇到以下问题:

我们希望将用户注册到WP\\u用户表,但我们必须让他们访问总共9个站点。是否可以将所有用户转储到一个池中,以授予访问所有站点上的帖子评论的权限?

提前感谢,

1 个回复
SO网友:kaiser

参考资料我找到了几个插件和解决方案。最有希望的似乎是MultiUser Management Plugin.

这里有一个简短的、未经测试的插件,因为有更简单的方法可以获取可用/注册的博客,通常您不需要它们的公共API函数。此外,我认为他们使用的一些东西已经被弃用了。

插件

。。。正如我所说,它还没有经过测试,应该只是提供一个起点。你必须跳过它,看看什么有效,什么无效。然后添加你需要的内容。

<?php
defined( \'ABSPATH\' ) OR exit;
/**
 * Plugin Name: (#84066) Register user to all sites upon registration
 */

add_action( \'plugins_loaded\', array( \'WPSE84077_register_everywhere\' ) );
class WPSE84077_register_everywhere
{
    protected static $instance;
    public static function init()
    {
        null === self :: $instance AND self :: $instance = new self;
        return self :: $instance;
    }
    public function __construct()
    {
        add_action( \'wpmu_activate_user\', array( $this, \'add_roles\' ) );
        add_action( \'wpmu_new_user\', array( $this, \'add_roles\' ) );
        add_action( \'user_register\', array( $this, \'add_roles\' ) );
    }
    public function add_roles( $user_id )
    {
        global $wpdb;
        $blogs = $wpdb->get_results( "
            SELECT *
            FROM {$wpdb->prefix}blogs
            ORDER BY blog_id
        " );
        if ( empty( $blogs ) )
            return;

        foreach( $blogs as $key => $blog )
        {
            if ( is_user_member_of_blog( $user_id, $blog[ \'blog_id\' ] ) )
                continue;

            switch_to_blog( $blog[ \'blog_id\' ] );

            // \'none\' role means that user registration won\'t happen on this blog
            $role = get_option( \'default_role\', \'none\' );
            $role !== \'none\' AND add_user_to_blog( $blog[ \'blog_id\' ], $user_id, $role );

            restore_current_blog();
        }
    }
}
如果你想在这里接受帮助并做出回报,你会回来用你的工作解决方案更新我的答案。

结束

相关推荐

WP MultiSite:默认添加关于博客创建的页面

我希望在使用WP Multisite创建新站点时,在默认情况下添加一个页面。因此,我有一个创建两个页面的函数:function my_default_pages() { $default_pages = array(\'Impress\', \'Contact\'); $existing_pages = get_pages(); foreach($existing_pages as $page) { $temp[] = $p