Ограничить страницы в WordPress, чтобы требовать входа в систему

Screen Shot 2013 07 01 в 12.23.52 PM

login_lock.jpgНа этой неделе мы заканчивали реализацию настраиваемой темы на клиентском сайте, и они попросили нас создать какое-то взаимодействие, при котором некоторые страницы были ограничены только зарегистрированными подписчиками. Сначала мы думали о внедрении сторонних плагинов, но решение оказалось довольно простым.

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


Затем найдите строку в коде вашей страницы, которая отображает контент. Должно получиться так:


Теперь вам нужно обернуть эту строку кодом:

Только подписчик К сожалению, контент, который вы пытаетесь получить, доступен только подписчикам.

Код начинается с проверки сеанса, чтобы узнать, вошел ли пользователь на ваш сайт WordPress. Если они вошли в систему, отображается содержимое. Если они не вошли в систему, в сообщении будет указано, что вы пытаетесь получить доступ к запрещенному контенту.

Чтобы использовать страницу, вам нужно выбрать Только для подписчиков шаблон страницы в расширенном разделе параметров вашей страницы (на боковой панели). Это ограничит страницу читателями, которые вошли в систему.

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

">Выйти /wp-login.php">Вход для клиентов

28 комментариев

  1. 1
  2. 2
  3. 3
    • 4

      Привет, Партха,

      Это было бы довольно просто - вы могли бы добавить ту же технику к заголовку страницы и в основном сказать… если (без идентификатора пользователя И страница не равна имени страницы), то заголовок будет направлен на страницу входа.

      Дуг

  4. 5

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

  5. 6
    • 7
      • 8

        Это неудобно для пользователя, но это нормально… Я чувствую, что мне могут помочь несколько изображений того, что я должен делать. В противном случае ... Я просто буду пробовать что-нибудь, пока оно не сработает!

        • 9

          скопируйте page.php, переименуйте page2.php и вставьте код выше, сохраните файл, загрузите обратно в content / theme / независимо от того, что называется, перейдите к публикации или измените макет страницы по умолчанию на page2.php. Нет необходимости создавать новый стиль / макет страницы, просто скопируйте тот, который вы используете, и переименуйте его. так что fullwidth.php - это так просто fullwidth2.php.

      • 10

        Итак, после МНОГИХ попыток и просмотра других руководств в Интернете я обнаружил, что СОЗДАНИЕ нового шаблона страницы - моя проблема. Я делаю его в текстовом редакторе и пытаюсь загрузить… куда? Я даже не знаю, куда идти. Кажется, я не могу найти это секретное место для загрузки!

        • 11

          Так верно, ЛаРок! У вас должна быть программа FTP и доступ к папке тем вашего веб-сайта, чтобы вы могли загрузить туда файл. В настоящее время НЕЛЬЗЯ сделать это через административный экран. Единственным исключением может быть установка плагина «Диспетчер файлов», который позволяет создавать новые файлы. Но будьте осторожны! 

  6. 12
  7. 13
  8. 14
  9. 15
    • 16

      Вы определенно можете просто проверить, вошел ли пользователь в систему; однако описанный выше метод в конечном итоге позволит вам использовать уровни разрешений, если вы захотите настроить уровни!

  10. 17
  11. 18
  12. 19

    Хорошо, я укушу ... Как бы вы изменили это, чтобы разрешить проверку разрешений?

    Скажем, мы по-прежнему хотим разрешить кому угодно создавать собственное имя пользователя «Подписчик» и публиковать ответы.
    НО - мы предоставляем доступ к странице «Только для подписчиков» только тем пользователям, которые указаны администратором?

  13. 20
  14. 21

    Дуглас, я использовал ваш код - и по большей части он отлично работает! У меня проблема в том, что ссылка для выхода из системы возвращается на сайт, которого не существует. Я на самом деле пробовал несколько кодов WordPress со всего Интернета, чтобы код выхода работал. . . но пользователь по-прежнему остается в системе и возвращается //wp-login.php?redirect_to=">log%20in%20%20%20%20%20%20%20%20%20%20%20%20 % 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20

    Есть предположения?

    • 22

      Похоже, может быть, когда код был скопирован из вашего браузера, он добавил кучу HTML-пробелов, Райан. Скопируйте код в Блокнот или Текстовую панель, а затем скопируйте его в свой шаблон, чтобы избавиться от этого материала.

  15. 23

    Хорошо, это именно то, что мне нужно сделать, но у меня есть один вопрос. Если они не являются подписчиками, как я могу сделать так, чтобы появилось поле «Войти» или «подписаться», чтобы они могли получить доступ к контенту?

    Спасибо

  16. 25

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

  17. 26

    Похоже, что этот метод подвержен перехвату сеанса. Файл cookie для входа будет добавлен, пока он находится в защищенной области, но поскольку wordpress обслуживает его как незащищенный файл cookie, он все равно будет обслуживаться, если пользователь вернется к незашифрованной части сайта.

  18. 28

Как вы думаете?

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются ваши данные комментариев.