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

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

Возвращаемся к . Сегодня нашел интересный (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, пользователя будет перенаправлять на страницу регистрации. Но интересно то, что страницы, созданные (в том числе и основной) все равно будут видны не авторизованным - на них вы сможете рассказать, почему им все-таки стоит зарегистрироваться и что это им даст. Так и хочется сказать на английском: 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 комментария

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

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

    • Так просто будет намного интереснее!

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

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

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

    • Скажите , появился таковой???

      • Боюсь, что нет :)

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

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

      • Огромное спасибо!

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

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

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

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

  • ок!

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

    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 , а при желании загрузить свой

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

  • @Денис:
    6 мая 2011 в 17:21

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

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

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

      на это

      bp_core_redirect( site_url() );

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

      • @Денис:
        6 мая 2011 в 19:17

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

        • @Денис:
          6 мая 2011 в 20:42

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

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

            if( bp_is_register_page() || bp_is_activation_page() )

            на вот это:

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

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

            • @Денис:
              7 мая 2011 в 21:29

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

RSS лентаTrackBack URL

Включиться в обсуждение

XHTML: <blockquote></blockquote> <a href=""></a> <strong></strong>

Если нужно разместить код, используйте теги: <pre>php|html|js</pre>