Невозможно добавить пользователя в блог при регистрации (Multisite)

Я пытаюсь добавить пользователей в конкретный блог с ролью, выбранной пользователем при регистрации.

Я могу добавить желаемую роль в мета:

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-plugins, и теперь он работает, по большей части.

Пользователи добавляются в блог 3, но не с ролью в мета, но с ролью «dmd».

Есть ли способ просмотреть значение $ meta? var_dump не работает.

Solutions Collecting From Web of "Невозможно добавить пользователя в блог при регистрации (Multisite)"

Что касается части обновления в вашем вопросе:

Я думаю, проблема здесь в том, что вам не хватает числа принятых аргументов в вашей настройке add_action() .

Если вы проверите Кодекс , использование:

 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, предупреждений и уведомлений. Проверьте, например, Отладка в WordPress в Codex.