注册时无法将用户添加到博客(多站点)

时间:2015-04-19 作者:coopersita

我正在尝试将一个用户添加到一个特定的博客中,其角色由用户在注册时选择。

我可以通过以下方式向meta添加所需的角色:

add_filter( \'add_signup_meta\', \'add_register_meta\'  );

public function add_register_meta($meta = array()) {

    $role = sanitize_text_field( $_POST[\'role\'] );
    $meta[\'role\'] =  $role;

    return $meta;

}
我可以在数据库的注册表中看到序列化的元。因此,我尝试将具有该角色的用户添加到特定博客:

add_action ( \'wpmu_activate_user\', \'assign_user_to_blog\' );

    public function assign_user_to_blog($user_id, $password, $meta ) {

    if ( isset($meta[\'role\']) ) {
            add_user_to_blog( 3, $user_id, $meta[\'role\']);

    } else {
            add_user_to_blog( 3, $user_id, "dmd");

    }

}
但当用户被激活时,什么都不会发生。用户未添加到日志。

我注意到一个奇怪的现象是,用户同时收到激活电子邮件和带有密码的电子邮件。这就像用户是自动激活的,而不是通过电子邮件中的激活密钥。这可能是问题所在吗?为什么会这样?

UPDATE: 我把插件改成了mu插件,现在大部分都可以使用了。

用户被添加到blog 3,但不是使用meta中的角色,而是使用“dmd”角色。

有没有办法查看$meta的价值?var\\u dump不工作。

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

关于您问题中的更新部分:

我认为这里的问题是你在你的add_action() 设置。

如果您查看Codex, 用法是:

add_action( $hook, $function_to_add, $priority, $accepted_args );
默认情况下,其中$priority = 10$accepted_args = 1.

因此,您的代码片段应该如下所示:

add_action ( \'wpmu_activate_user\', \'assign_user_to_blog\', 10, 3 );

function assign_user_to_blog( $user_id, $password, $meta )
{
    $role = isset( $meta[\'role\'] ) ? $meta[\'role\'] : \'dmd\';
    add_user_to_blog( 3, $user_id, $role );
}
但是$meta 变量在以前的代码段中未定义。

开发时应记住使用WP_DEBUG 监视PHP错误、警告和通知。例如,检查Debugging in WordPress 在法典中。

结束

相关推荐

Multisite Login problem

自从我将我的多站点网络从3.8升级到3.9后,我就无法通过主博客登录。它是一个子目录安装,而不是子域。当我尝试登录到主站点时:http://uspress.avenues.org/wp-login.php, 获取消息“此用户已选择删除其帐户,并且内容不再可用。”这不是真的。据我所知,你不能删除主网站,我已经检查了数据库,网站被设置为公共网站。如果转到子网站的登录页,我可以这样登录:http://uspress.avenues.org/kgarnier/wp-login.php主站点的主页是可以访问的,但是