Как показывать текст только зарегистрированным

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

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

Вставьте в файл functions.php такой код:

add_shortcode( 'member', 'member_check_shortcode' );

function member_check_shortcode( $atts, $content = null ) {
	 if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )
		return $content;
	return '';
}

Теперь чтобы скрыть текст от незарегистрированных посетителей, его нужно просто обозначить метками:

[member] этот текст будет виден только зарегистрированным пользователям [/member]

Этот достаточно удобный, понятный и простой шорткод без каких-либо аргументов можно использовать для того, чтобы сделать зарегистрированных пользователей привилегированными — показывать им контент, недоступный обычным пользователям.

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

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

  1. lilumi

    а какие ты знаешь решения, чтобы показывать отдельные посты, только зарегистрированным?

    Ответить
    1. Как показать часть публикации только зарегистрированным | RestrictedArea Plugin for WordPress: https://n-wp.ru/kak-pokazat-chast-publikatsii-tolko-zaregistrirovannyim-restrictedarea-plugin-for-wordpress/
      Как показывать часть содержимого при определенных условиях | Optional Content: https://n-wp.ru/kak-pokazyivat-chast-soderzhimogo-pri-opredelennyih-usloviyah-optional-content/
      Как скрыть текст от зарегистрированных пользователей | Hidden Content: https://n-wp.ru/kak-skryt-tekst-ot-zaregistrirovannyx-polzovatelej-hidden-content/
      Как скрыть часть публикации | Show Content by User Level: https://n-wp.ru/kak-skryt-chast-publikacii-show-content-by-user-level/
      Как показывать текст только зарегистрированным: https://n-wp.ru/kak-pokazyvat-tekst-tolko-zaregistrirovannym/
      Как запретить читать блог незарегистрированным пользователям | Members Only: https://n-wp.ru/kak-zapretit-chitat-blog-nezaregistrirovannym-polzovatelyam-members-only/
      Как скрыть часть публикации от незарегистрированных пользователей | HidePost: https://n-wp.ru/kak-skryt-chast-publikacii-ot-nezaregistrirovannyx-polzovatelej-hidepost/

      Ответить
      1. lilumi

        к сожалению, это все не то. Мне нужно не часть скрывать, а целые посты!
        Вот, как на хабрахабре топики из блога «Юмор на хабрахабре» — эти топики видят, только те, кто подписан на этот блог.
        Вот я и ищу такое решение, чтобы посты из определенной категории не показывались для обычных посетителей ни в rss, ни на страницах всевозможных архивов, ни на карте сайта, ни в каких то не было плагинах-виджетах и т.п., а вот, если человек зарегистрирован на вордпресовском сайте, то он видит эти посты.

        Ответить
        1. tiaurus

          Хабрахабр работает не на WordPress, а на движке LiveStreet, у которого принцип работы совершенно другой.
          Если хотите, чтобы в вашем блоге было много под-блогов, установите сначала WordPress MU, и в нем уже закройте блоги от просмотра для незарегистрированных, используя, например, плагин Members Only.

          Ответить
          1. lilumi

            подблогов мне не нужно, да и они (подблоги) скоро будут доступны в wordpress 3.0 (там будет wordpress и wordpress MU собраны воедино).

            И хабрахабр не на liveStreet – «ТМ» создало собственную цмску для хабра, а livestreet, bigstreet и explay cms были созданы уже после появления хабрахабра, как бесплатные cms позволяющие создать свой хабрахабр с блекджеком и шлюхами :)

            Ответить
        2. tiaurus

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

          Ответить
          1. lilumi

            да, этот плагин я знаю и использую на некоторых сайтах, но он не решает мою задачу.
            Мне бы, что-то такое, как есть в вордпрессе «видимость: личная» при редактировании поста, только для группы пользователей, а не как сейчас — только для автора поста.

            Наверное, такого не существует. Зря только ищу, надо самому изобретать и писать.

            Ответить
            1. tiaurus

              Я думаю, такое уже существует. Надо искать.

              Ответить
      2. карина

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

        Ответить
  2. lilumi

    а спамные трекбеки ты не удаляешь? :)

    Ответить
    1. Этим занимается плагин.

      Ответить
    2. Этим занимается плагин. Но сильно я не расстраиваюсь: все равно трекбэки закрыты для индексации. Раньше я не пользовался защитой трекбэков, поэтому некоторый спам еще остался. Сейчас же спаму пройти в блог очень трудно.

      Ответить
  3. WebMast

    А как быть если я хочу спрятать видео. Проигрыватель uppod когда прячу код оно выводт [uppod video=ссылка на видео]

    Ответить
    1. Ответить
  4. Grawl

    Я решил применить это в шаблоне — показывать маленькую, неприметную иконку WordPress в подвале, ведущую на страницу входа. Решил не выпендриваться с шорткодом, а просто использовать функцию WordPress ‘is_user_logged_in()’. Получилось так:

    <?php if ( !is_user_logged_in() ) { ?>
    	<div id="login">
    		тут картинка со ссылкой на страницу входа
    	</div>
    <?php } ?>
    

    Восклицательный знак перед функцией служит отрицанием, что читается так: «если ( не вошёл пользователь ) {».

    Ответить