
Wordpress всем хорош, в том числе и тем, что жить и работать спокойно не даёт — постоянно чего-то в нём не хватает для полного счастья, отчего и разработчикам плагинов радость — есть чем заняться, и всем, кому эти плагины облегчают жизнь. Сегодня я расскажу о том, как сделать страницы авторизации, регистрации, редактирования профиля и напоминания в одном стиле с публичной частью сайта на Wordpress.
Есть в этом мире два замечательных плагина: Theme My Login и Theme My Profile, они-то и помогут нам в нашем деле. Скачаем, установим и приступим к настройкам и модификациям.
Рабочий пример вы можете пощупать на моём тестовом сайте.
Установка
Существуют как минимум два способа установить плагин для Wordpress.
Ручная установка
- Скачиваем архив с нужным плагином на локальный компьютер.
- Извлекаем архив.
- Полученную папку с плагином с помощью FTP-клиента помещаем в каталог /wp-content/plugins, который находится в папке с вашим сайтом на виртуальном хостинге (как правило).
- В панели администратора переходим на страницу Плагины → Установленные, находим наш плагин и нажимаем «Активировать».
Автоматическая установка
Если плагин есть в репозитории Wordpress, то его можно найти и добавить на сайт прямо из админки.
- В панели управления заходим на страницу Плагины → Добавить новый.
- Вводим в поле поиска название плагина, нажимаем «Найти плагины».
- Из результатов поиска выбираем нужный плагин и нажимаем «Установить», откроется окно с описанием, в нём также нажимаем «Установить сейчас».
- Возможно вам будет предложено ввести данные для FTP-доступа.
- После того, как плагин загрузится, нажмите на «Активировать плагин».
Настройка плагинов
Я подготовил для вас переводы этих плагинов на русский язык. Скачайте и загрузите эти файлы в папки wp-content/plugins/theme-my-login/language и wp-content/plugins/theme-my-profile/language соответственно.
Некоторые фразы не переведены, так как не доступны для перевода с помощью программы Poedit, а править напрямую файлы плагинов не очень предусмотрительно.
Настройка Theme My Login
General — в нашем примере мы не будем включать ни один из параметров.
Template — здесь у нас есть возможность настроить текст служебных ссылок и приветствия (Titles), а также текст служебных сообщений (Messages).
Links — это настройка ссылок для виджета, который в нашем примере мы использовать не будем, почему — объясню ниже. А если по делу — там всё просто, можно добавлять и удалять ссылки, которые будут видны авторизованным пользователям, причём для каждой группы их можно настраивать индивидуально.
Redirection — после авторизации можно отправить пользователей из разных групп на разные страницы.
E-mail — здесь можно и нужно настроить сообщения, которые плагин будет отправлять пользователям по разным поводам.
Теперь объяснюсь по поводу виджета — если он вам понадобится, вы всегда сможете его использовать, я же покажу вам альтернативный способ сделать форму входа и меню пользователя с помощью изменения кода шаблона — так будет более гибко, у вас будет возможность самим решить, что показывать неавторизованным, а что — авторизованным пользователям, будь то ссылки, картинки, любой другой код.
В нужном месте шаблона вставляем следующий код:
<?php global $user_ID, $user_identity, $user_level ?><br />
<?php if ( $user_ID ) : ?><br />
СОДЕРЖИМОЕ ДЛЯ ПОЛЬЗОВАТЕЛЕЙ<br />
<?php else : ?><br />
СОДЕРЖИМОЕ ДЛЯ НЕАВТОРИЗОВАННЫХ ПОЛЬЗОВАТЕЛЕЙ<br />
<?php if ( get_option('users_can_register') ) : ?><br />
ЕСЛИ МОЖНО ЗАРЕГИСТРИРОВАТЬСЯ<br />
<?php endif ?><br />
<?php endif; ?>
Теперь меняем то, что написано заглавными буквами, на то, что нам нужно. Можно последовать моему примеру, а можно использовать собственный код.
СОДЕРЖИМОЕ ДЛЯ ПОЛЬЗОВАТЕЛЕЙ я заменил на ссылки для пользователя, причём ссылка на администрирование доступна только администраторам.
<br />
<h2 class="widgettitle">Меню пользователя</h2>
<p>Здравствуйте, <strong><?php echo $user_identity ?></strong>.</p>
<ul>
<?php global $user_ID; if( $user_ID ) : ?><br />
<?php if( current_user_can('level_10') ) : ?></p>
<li><a href="<?php bloginfo('url') ?>/wp-admin/index.php">Администрирование</a></li>
<p><?php else : ?><br />
<?php endif; ?><br />
<?php endif; ?></p>
<li><a href="<?php bloginfo('url') ?>/wp-admin/profile.php">Настройки профиля</a></li>
<li><a href="<?php echo wp_logout_url(get_permalink()); ?>">Выйти</a></li>
</ul>
<p>
В результате получаем примерно следующее:

СОДЕРЖИМОЕ ДЛЯ НЕАВТОРИЗОВАННЫХ ПОЛЬЗОВАТЕЛЕЙ мы поменяем на форму авторизации пользователей.
<br />
<h2 class="widgettitle">Авторизация</h2>
<form name="loginform-tml-main" id="loginform-tml-main" action="/login/?instance=tml-main&action=login" method="post">
<p><label for="log-tml-main">Логин</label></p>
<input type="text" name="log-tml-main" id="log-tml-main" class="input" size="18" />
<p><label for="pwd-tml-main">Пароль</label></p>
<input type="password" name="pwd-tml-main" id="pwd-tml-main" class="input" value="" size="18" />
<p><label for="rememberme-tml-main"><br />
<input name="rememberme-tml-main" type="checkbox" id="rememberme-tml-main" value="forever" /> Запомнить?</label></p>
<input type="submit" name="login-submit-tml-main" id="login-submit-tml-main" value="Войти" />
<input type="hidden" name="redirect_to" value="http://wptest.ru/login/" />
<input type="hidden" name="testcookie" value="1" />
</form>
<p>
Неавторизованным пользователям достанется примерно такая форма:

ЕСЛИ МОЖНО ЗАРЕГИСТРИРОВАТЬСЯ заменим на ссылки на страницы авторизации и восстановления пароля.
<ul>
<li><a href="<?php bloginfo('url') ?>/login/?instance=tml-main&action=register">Регистрация</a></li>
<li><a href="<?php bloginfo('url') ?>/wp-login.php?action=lostpassword">Забыли пароль?</a></li>
</ul>
<p>
Вот такую красотень увидят все, кто ещё не авторизовался или не зарегистрировался на сайте.

С плагином Theme My Login мы разобрались. Приступим к его товарищу.
Theme My Profile
Здесь всё предельно просто. Заходим в Настройки → Theme My Profile и выбираем группы пользователей, для которых необходимо темизировать страницу редактирования профиля.
Возможно, вам захочется настроить стиль этой страницы. Для этого вам понадобится внести изменения в файл style.css. Я добавил туда следующее:
#your-profile .form-table td {<br />
text-align:left;<br />
width:60%;<br />
}<br />
#your-profile .form-table th {<br />
text-align:right;<br />
vertical-align:top;<br />
width:30%;<br />
padding-top:8px;<br />
}<br />
#your-profile .form-table input {<br />
display:block;<br />
}<br />
#your-profile .form-table textarea {<br />
width:260px;<br />
}<br />
#your-profile .form-table select {<br />
height:auto;<br />
width:260px;<br />
}
Надеюсь, урок для вас не был сложным. С удовольствием отвечу на ваши вопросы в комментариях. Живой пример вы можете посмотреть и пощупать на моём тестовом сайте.
Всего самого доброго.
Артём Савельев.
P.S. Кстати, иллюстрация к уроку создана из скриншотов недавно созданного мной блога Сергея Ройзмана, который публикует уникальную информацию для руководителей продающих подразделений крупных Российских и международных компаний, КАМов (Key Account Managers), Продакт, Сейлз менеджеров, работающих в Больших продажах (B2B и B2G).
P.P.S. Типография Галеон предоставляет полиграфические услуги в Москве — офсетная печать, современное качество.


Пассивный доход
Пассивный доход
Размещение ссылок
Размещение статей
Размещение ссылок
Размещение ссылок
Ссылки
Ссылки
Быстрые ссылки
Ссылки и статьи
Полезная инфа, вот только у меня руки на столько кривые, что опять блог будет лежать в ауте...
Ответить
@Supaman, а ты поставь себе локальный сервер и на нём всё тестируй, чтобы живой сайт трогать только когда всё уже сделано будет.
Ответить
блин, всё внимательно прочёл, но не получается...
Ответить
Круто!
У меня проблема с TMP: невозможно обновить данные через страницу профиля. После нажатия кнопки она просто перегружается, но никаких изменений не происходит и никаких сообщений не выводится.
Не знаешь, что можно сделать?
Ответить
Не сталкивался, пришли на почту адрес, где можно посмотреть ошибку. Почта на странице обратной связи
Ответить
спасибо.
ссылку выслал.
Ответить
Именно то что я искал, спасибо Вам большое. Написано все более чем доступно.
Ответить
Спасибо за ваш шикарный блог. Мой вордпресс будет доволен.
А то я намучился с этим, хотел без плагинов реализовать тоже самое.
Ответить
Сделал все как написано, но появляется ошибка «Страница не найдена» когда нажимаешь «Регистрация».
То же самое происходит при входе под логином и паролем уже зарегистрированным на блоге.
Такая же ошибка при выходе...
Ответить
@r0cash, похоже на проблему со ссылками. У активированы ЧПУ?
Ответить
Да, ЧПУ активированы. Произвольная структура /%category%/%postname%.html
Ответить
Подскажи как сделать чтобы после нажатия ссылки «Настройки профиля» страница с настройками для пользователя выводилась как у тебя на тестовом сайте (через виджет).
Ответить
Здравствуйте, захотел внедрить авторизацию и регистрацию в дизайн блога. Сделал все, как Вы здесь описали, но ничего не вышло, когда ввожу логин и пароль в сайдбаре, меня кидает на страницу login, где мне снова нужно вводить логин и пароль, чтобы войти.
Что я делаю не так, подскажите пожалуйста.
Использую: WP 2.9.2 ru — lecactus, theme-my-login 5.0.6, theme-my-profile 1.2.1
Ответить
@Владислав, дело в неймах полей логина и пароля: они должны такими же, как на странице входа (login).
«Правильные» названия — log и pwd.
Ответить
Спасибо. Хорошая штука. Вот только виджета я не нашел. Где поискать не подскажите?
Ответить
Поскажи, как сделать чтобЫ на WordPresse 3.0.1 работал языковой файл?
Ответить
расскажи, если не трудно, как ты плагины переводишь на русский язык?
Ответить
@overbag, как-то так i-novice.net/kak-perevesti-wordpress-plagin/
Ответить
@tutto, для разных подразделов можно использовать разные шаблоны в рамках одной темы. Просто установить несколько тем и привязать их к разным рубрикам по всей видимости невозможно, если только не раздобыть какой-нибудь хитрый плагин. Да и не нужно это, можно очень тонко настроить зависимости в коде шаблона и отображать сайт при разных условиях по-разному.
Ответить
@Артём Савельев,
я вот так и непонял куда встовлять код:
СОДЕРЖИМОЕ ДЛЯ ПОЛЬЗОВАТЕЛЕЙ
СОДЕРЖИМОЕ ДЛЯ НЕАВТОРИЗОВАННЫХ ПОЛЬЗОВАТЕЛЕЙ
ЕСЛИ МОЖНО ЗАРЕГИСТРИРОВАТЬСЯ
Ответить
@Cr1ms0n, Этот код нужно заменить на то, что написано в уроке.
Ответить
Интересная статья) Что-то даже в голову не приходило сделать подобное. Привык уже, что на всех блогах у меня один зарегистрированный пользователь — я)
Ответить
Артём подскажи пожалуйста, а как добавить дополнительные поля в форму регистрации, например как на картинке у твоего поста?
Ответить
@Роман, на сайте. с которого сделан скриншот, для этого используется плагин Register Plus
Ответить
Здравствуйте Артем! Я просмотрел ваш тестовый сайт. Неплохо. Это вы так с плагинами поработали? Меня интересует авторизация. Попробовал авторизоваться у вас на сайте. Потестировал. Неплохо! Я вот хочу свой сайт написать. Хочу сделать его наподобие etxt.ru. Чтобы пользователь имел личный кабинет, доступ к данным сайта, мог оставлять свои заказы... Как это можно сделать?
Ответить
@Elf, рекомендую использовать Drupal, в нём больше гибкости. На этом блоге вполне вероятно скоро появятся уроки по Drupal. Можно создать любые типы записей, либые к ним поля и выводить всю возможную информацию самыми разными способами, с самыми подробными фильтрами и сортировкой, если необходимо. Так что Drupal попробуйте =)
Ответить
Добрый день, помогите мне, я хорошо разбираюсь в HTML, но РНР пока от меня вещь далекая...кое как я перестроил шаблон wordpress под мою страничку, но как сделать нормальную регистрацию, что бы посетители могли нормально регистрироваться нашел только у Вас. Но есть огромная проблема:
В нужном месте шаблона вставляем следующий код:
СОДЕРЖИМОЕ ДЛЯ ПОЛЬЗОВАТЕЛЕЙ
СОДЕРЖИМОЕ ДЛЯ НЕАВТОРИЗОВАННЫХ ПОЛЬЗОВАТЕЛЕЙ
ЕСЛИ МОЖНО ЗАРЕГИСТРИРОВАТЬСЯ
Где это нужно место находится, можно ли рассказать более подробно, Ваш пример сайта мне подошел идеально...но мне не понять как это организовать самому...прошу Вас о помощи...
Ответить
@Женя, Здравствуйте. Нужное место — это там, где вы хотели бы вывести эту информацию. То есть в HTML шаблона нужно вставить.
Ответить
informatika.mksat.net/?page_id=3849 — вот результаты моих попыток, бред полный очень надеюсь на Вашу поддержку
Ответить
Здравствуйте,
я установил плагин Theme My Login, настройки вроде понятные. В форме авторизации есть «забыли пароль?», а вот «регистрироваться» вообще никак не появляется. В настройках даже виджета если указать «показать регистрацию», не появляется. Хотел дальше сделать изменения в шаблоне как у вас на seogad.ru/?p=794
В настройках указываю на"разрешить регистрацию", все равно не регистрирует,
может мне как-то подскажете...
Ответить