Поддержка WordPress Multisite Регистрация на мультиайте

  • Здравствуйте!
    Кто-нибудь здесь понимает в чём состоит идея создателей относительно регистрации на мультисайте?
    Посетитель пробует зарегистрироваться, по умолчанию он должен получить права участника (согласно настройкам), но он появляется только в списке пользователей сети, соответственно ни на каком сайте прав не получил (даже подписчика)
    Почему, например, не сделали так, что он поучал бы права на сайте, с которого зарегистрировался?
    Какая-то идея за этим стоит или просто баг?

Просмотр 12 ответов — с 1 по 12 (всего 12)
  • Идея в том, чтобы пользователь мог регистрироваться и при этом создать свой собственный сайт в сети, как на WordPress.com 🙂

    На самом деле вы можете выполнить любые действия при регистрации пользователя: дать ему права на один или несколько сайтов, добавить пользователю мета данные, прислать письмо по электронной почте, или уведомление администратору и т.д. Для этого можно воспользоваться событием user_register.

    Для этого можно воспользоваться событием user_register

    Спасибо!
    Полезная идея!
    Только я не могу сообразить как узнать с какого сайта вошёл в регистрацию пользователь?
    А без этого непонятно к какому сайту его привязывать…

    get_current_blog_id() пробовали?

    get_current_blog_id() пробовали?

    Так ведь при регистраци перекидывает на главный сайт, его мне get_current_blog_id() и покажет.

    Вот набросал:

    function my_signup_extra_fields() {
    	$blog_id = 0;
    	if ( ! empty( $_POST['my_referer_blog_id'] ) )
    		$blog_id = absint( $_POST['my_referer_blog_id'] );
    
    	if ( ! $blog_id )
    		$blog_id = get_blog_id_from_url( parse_url( esc_url_raw( $_SERVER['HTTP_REFERER'] ), PHP_URL_HOST ) );
    
    	if ( ! $blog_id )
    		$blog_id = get_current_blog_id();
    
    	printf( '<input type="text" name="my_referer_blog_id" value="%d" />', $blog_id );
    }
    add_action( 'signup_extra_fields', 'my_signup_extra_fields' );
    
    function my_add_signup_meta( $meta ) {
    	if ( ! empty( $_POST['my_referer_blog_id'] ) )
    		$meta['signup_blog_id'] = absint( $_POST['my_referer_blog_id'] );
    
    	return $meta;
    }
    add_filter( 'add_signup_meta', 'my_add_signup_meta' );

    Вот набросал:
    Здорово!
    Если так подойти, то может получиться.
    Хоть я и не понял откуда берётся $_POST['my_referer_blog_id'] ?

    Оно берётся из вызова printf в первой функции 🙂

    Оно берётся из вызова printf в первой функции

    Ага, это понятно.
    Осталось только выяснить правильное название для этого мета-поля.
    Ведь на самом деле пользователь привязывается к конкретному блогу (через админку). Но это, я думаю, можно разобраться.
    Спасибо!

    Это уже после активации пользователя лучше делать с помощью add_user_to_blog, а идентификатор сайта можно уже взять из сохранённого мета-поля.

    Это уже после активации пользователя лучше делать с помощью add_user_to_blog

    Согласен.
    Итого придётся вставить код на 3 страницы.
    При обновлении как быть?

    На какие страницы? Вы весь этот код в плагин вставляете и активируйте в сети. При обновлении ваш плагин продолжает работать 🙂

    Я думал что вставить input в форму придётся через фильтр?
    А это видимо делает строка:
    add_action( 'signup_extra_fields', 'my_signup_extra_fields' );
    Да, тогда всё понятно, какой там крючок на активации осталось посмотреть.

Просмотр 12 ответов — с 1 по 12 (всего 12)
  • Тема «Регистрация на мультиайте» закрыта для новых ответов.