Хак: делаем социальную сеть требующей регистрации

4 дня ничего нового не публиковал, потому что работал над менеджером задач для новой платформы, да и дома меня, собственно, тоже почти не было :)

Возвращаемся к BuddyPress. Сегодня нашел интересный хак (props Escamillaweb.com) для вашей социальной сети, которые еще на один шаг приблизит вас к Вконтакте. В чем особенность Вконтакте? Всю информацию видит лишь зарегистрированный и авторизованный пользовать. Если он не зарегистрирован и не зашел в свой аккаунт, то всей активности сайта, да и вообще всего сайта, он не видит. Если вы вставите вот этот код:

function hidden_network() {
global $bp;
if( bp_is_register_page() || bp_is_activation_page() )
return;
if( ! bp_is_blog_page() && ! is_user_logged_in() )
bp_core_redirect( $bp->root_domain .'/'. BP_REGISTER_SLUG );
}
add_action( 'get_header', 'hidden_network' );

то при попытке перейти на любую страницу, созданную BuddyPress, пользователя будет перенаправлять на страницу регистрации. Но интересно то, что страницы, созданные WordPress (в том числе и блог основной) все равно будут видны не авторизованным – на них вы сможете рассказать, почему им все-таки стоит зарегистрироваться и что это им даст. Так и хочется сказать на английском: It’s so sweet :)

Но и это еще не все! Если же вы хотите стать абсолютно закрытым сообществом, чтобы никто не мог ничего просматривать, то вам надо вставить вот этот код:

function hidden_network() {
global $bp;
if( bp_is_register_page() || bp_is_activation_page() )
return;
if( ! is_user_logged_in() )
bp_core_redirect( $bp->root_domain .'/'. BP_REGISTER_SLUG );
}
add_action( 'get_header', 'hidden_network' );

и тогда будет закрыта от неавторизованных даже главная страница (включая и все остальное).

В случае применения любого из этих хаков вся навигация будет видна (хоть и недоступна), шаблон не разламывается. И кстати, код надо вставлять в файл function.php вашего шаблона!

комментария 24

  1. Альберт:

    Спасибо!))) ждал такого но вот никак не получилось…т.е забывал спросить как такое сделать!

  2. Альберт:

    Да кстати если всю навигацию перевести в бадибар то она видна не будет…ну если установить Скрыть бадибар для неавторизованных! ну естественно ждем Славика!)

  3. Jettochkin:

    Отличный хак! теперь бы еще сделать его с настройками.. не показывать список “групп” и/или “пользователей” и/или “блогов” и тп

  4. Отличная штука. То что искал!
    Если будут еще и настройки вообще будет супер!

  5. Jettochkin:

    Если интересно.. через 3-4 дня будет плагин с хаками.. с настройками..

  6. Немного офтоп, но можно ли сделать так. чтобы человек мог регистрироваться. Но блог не получал?
    А еще лучше, чтобы можно было логинится чеез соцсети и иметь возможность настраивать своий профиль, вступать в открытые группы и т.д. Может знаете существующие решения?

    • Активируйте BP, отключите возможность создания блогов в админке – при регистрации люди не смогут создавать блоги.
      Все остальное – функционал BP по умолчанию, кроме логина через соц.сети. Универсальное решение для логина – Loginza.

  7. vovasik:

    Кстати про логинзу. А есть ли готовые решения как загружать обычным пользователям обычные аватары, а вошедшим через логинзу из соц сетей?

    • Jettochkin:

      убирайте логинзу!!! боже упаси это творение ставит туда же – где стоит BP!

  8. vovasik:

    копать надо в сторону bp-core-avatars ? я прав?

    • Да, фильтр на вывод аватара в зависимости от того, каким образом авторизовался пользователь.

  9. vovasik:

    все же задам тупой вопрос, попробовать пока нет возможности: Если я правильно понял аватарку по умолчанию выводит эти строки

    if ( !defined( ‘BP_AVATAR_DEFAULT’ ) )
    define( ‘BP_AVATAR_DEFAULT’, BP_PLUGIN_URL . ‘/bp-core/images/mystery-man.jpg’ );

    if ( !defined( ‘BP_AVATAR_DEFAULT_THUMB’ ) )
    define( ‘BP_AVATAR_DEFAULT_THUMB’, BP_PLUGIN_URL . ‘/bp-core/images/mystery-man-50.jpg’ );
    }

    если вместо mystery-man.jpg и mystery-man-50.jpg задать значение стандартного аватара ядра wp подменяться ли аватарки на loginza-вские и будет ли возможность загружать аватарку стандартным способом? Объясню почему не понравился вариант с фильтром- не придумал по какому признаку отличать юзеров зашедших с loginza? а так вроде по умолчанию будет loginza , а при желании загрузить свой

  10. vovasik:

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

  11. Денис:

    Это всё классно!))) Но подскажите плиз как будет выглядеть хак, чтоб было доступна только главная страница, а блог вордпресса закрыт для неавторизованых пользователей? Спасибо)

    • Во втором куске кода поменяйте вот это:

      bp_core_redirect( $bp->root_domain .'/'. BP_REGISTER_SLUG );

      на это

      bp_core_redirect( site_url() );

      И используйте, соответственно, именно его.

      • Денис:

        Спасибо, но пишет Ссылка была перенаправлена на … . Щелкните ссылку, чтобы перейти.
        Создано Opera.
        И на главную не переходит.

        • Денис:

          Во всех браузерах пробовал, но ничего. На главную не попадает, а зависает на перенаправлении((((

          • В том же самом втором куске вот это:

            if( bp_is_register_page() || bp_is_activation_page() )

            на вот это:

            if( bp_is_register_page() || bp_is_activation_page() || is_home() || is_index() )

            Должно все заработать.

          • Денис:

            Блин, всё равно не перенаправляет! Сначало вообще выдал ошибку типа не понятная функция index. Я удалил индекс, а оно всё равно не перенаправляет. Не понятно(

Добавить комментарий

Ваш адрес email не будет опубликован.