Конвертируем гостей и анонимов в честных пользователей wordpress

·

Интересный факт по поводу wordpress заключается в том, что в этом движке даже новичку доступно очень много всего прямо «из коробочки», а если вы хоть немного знакомы с языком программирования php и с основными функциями wordpress, то сможет извлечь из движка еще очень много всего, скрытого от глаз непосвященных. Об этом как раз и рассказывается в нашей рубрике. Справа можете подписаться на обновления блога, чтобы быть в курсе последней информации из мира wordpress.

На днях я получил от одного из своих читателей Алексея следующее письмо:

«Здравствуйте, Роман!
Возможно вы знаете, весь инет перерыл, ничего дельного не нашел.
Мне нужно, чтобы на сайт (wordpress) попадали только авторизованные пользователи, то есть, чтобы новый пользователь видел только страницу авторизации с переходом на страницу регистрации (если надо), даже если ему прислали ссылку на внутренние страницы (это, я так понимаю, решается куками стандартным образом)»

Алексей, еще раз хочу поблагодарить тебя за твой вопрос, я постараюсь на него ответить.

Итак, задача:

[box type=»info»] Как сделать перенаправление незалогиненных пользователей с любой страницы сайта на страницу регистрации?[/box]

Для решения данной задачи вовсе не обязательно обращаться к кукам. Мы воспользуемся одной стандартной функцией wordpress, которая связана с ролями пользователей. Для освоения данного урока желательно иметь какие-то навыки работы с html и php и понимание шаблонов wordpress.


В wordpress выделяется несколько таких ролей:

  1. Подписчик — обладает правами читать и комментировать сообщения, но свои сообщения он создавать, и тем более редактировать, не может.
  2. Участник — может добавлять свои статьи, а также редактировать их, но без права публикации. Публикация должна быть одобрена кем-то свыше.
  3. Автор — имеет право опубликовать свои статьи самостоятельно, без модерации.
  4. Редактор — может редактировать статьи других участников и, конечно же, добавлять и редактировать свои.
  5. Администратор — обладает полными правами на все разделы административной панели сайта.

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

Ничему учить не надо! WordPress уже все это умеет, надо только сказать ему, что вам это нужно, и он сам все сделает!
Для этого существует такая вещь, как conditional tags. Их много, этих тегов, и они все очень хорошо описаны в кодексе wordpress на соответствующей странице: Conditional Tags.
Нас интересует следующий тег, который как раз и предназначен для того, чтобы призвать к повиновению всех праздношатающихся анонимов и прохожих и направить их в нужное место:

is user logged in

В данном случае, на страницу регистрации.
Этот тег определяет, кем является лицо, просматривающее сайт — гостем или зарегистрированным пользователем, который читает сайт под своей учетной записью.
Функция используется вместе с условием

 

И возвращает только два значения — true и falce, то есть «правда» и «ложь».
А вот, что включить в результат выполнения условия — тут вы ограничены только своей фантазией.
Но давайте решим задачу Алексея.
Нам нужно переадресовать нашего анонима на страницу регистрации, где он, если в нем жива еще хоть капля совести, сможет доказать свою лояльность вашему проекту и оставить вам некоторые сведения о себе взамен на право честно вкушать ваш халявный контент или покупать товары в вашем магазине.

Для этого нам бы пригодилась еще одна функция wordpress:
wp_register()
которая может генерировать ссылку на страницу регистрации. Но в дальнейшем мы все-таки от нее откажется и пропишем ссылку на страницу регистрации как есть.

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

Поисковики однозначно признают один способ редиректа — ссылку. Что такое ссылка? Это редирект, осуществляемый с согласия пользователя, который по этой ссылке кликнул. Поэтому можно просто разместить на страницах сайта ссылку на регистрацию.
Кроме этого, существует редирект написанный на php с использованием функции header, которая позволяет подменять стандартные заголовки http, а также создавать новые.

Выглядит примерно так:

Вставлять нужно обязательно в самое начало файла, то есть перед открывающим знаком Редирект на .htaccess рассматривать даже не будем, потому что он также не позволит подключить к нему наше условие.
Редирект на iframe не будем использовать из уважения к поисковым системам.

Редирект с помощью html-тега meta:


Вставляется на странице между тегами head.

И еще остается версия на javascript. Примерно так:

Можно вставлять где угодно на странице, лучше всего в начале. Такой редирект часто используют дорвейщики, и поисковики относятся к нему подозрительно. Хотя есть мнение, что поисковики не могут видеть javascript. В общем, есть поле для экспериментов.

В итоге у нас есть выбор из meta и javascript

Сам код условия выглядит примерно так:

Обратите внимание, что перед условным тегом я поставил восклицательный знак, который означает неравенство. По умлочанию тег означает «Если пользователь залогинен», а нам нужно наоборот «Если пользователь не залогинен», поэтому ставим неравенство.
И между фигурными скобками размещаем условие:


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

http://ваш-домен.ру/wp-login.php?action=register

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





Или, если с javascript, то вот так:



И в том и в другом случае код условия лучше разместить внутри тега

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

[box type=»bio»] Понравилась статья — кликните на кнопки социальных сетей внизу. Подпишитесь на рассылку новых сообщений сайта — она находится в правой колонке сверху. Так вы всегда сможете получать самую свежую информацию с этого блога прямо себе на почту! [/box]

zp8497586rq
Поделиться записью:
Picture of Агентство Romapad
Агентство Romapad
Работаем с 2009 года. Реализовано более 400 проектов. Слаженная команда профессионалов. Создание и администрирование сайтов. Техническая поддержка. Помощь новичкам.
Подпишитесь на рассылку новостей
Отправляя заявку, вы даете согласие на обработку персональных данных
Комментарии к публикациям
Похожие статьи
Прокрутить вверх
Оставьте Ваши контакты,
и мы с Вами свяжемся

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

Nullam quis risus eget urna mollis ornare vel eu leo. Aenean lacinia bibendum nulla sed 

Join our newsletter and get 20% discount
Promotion nulla vitae elit libero a pharetra augue