Как проверить авторизован ли пользователь в WordPress

Ромчик
0

Проверка авторизован ли пользователь

Доброго времени суток. Не так давно я ввел новый функционал на свой блог. Теперь можно оставить заявку на создание сайта. Во время тестирования данного функционала я столкнулся с одной проблемой: мне необходимо было показывать кнопку только авторизованному пользователю и не только авторизованному, а еще и пользователю с логином admin. Также многие сталкиваются с проблемой, необходимости показывать дополнительную информацию только для авторизованных пользователей. Дальше мы рассмотрим, как это реализовать.

У нас есть сайт (в моем случае это http://web-programming.loc). На сайте есть кнопка Оставить заявку

Кнопка Оставить заявку

Данную кнопку мы должны показывать только пользователю, который прошел авторизацию в WordPress.

Проверка авторизован ли пользователь

Ок, ищем код, который отвечает за отображение данной кнопки. У меня:

<div class="aside-wrap">
    <div class="aside-title">
        <h2>Заказать сайт:</h2>
    </div>
    <div>
        <a class="btn btn-default" href="#" data-toggle="modal" data-target="#myModal" role="button" style="width: 100%;background-color: #3B5DAA;color:#fff;">Оставить заявку</a>
    </div>
</div>

Для проверки авторизован ли пользователь в WordPress есть функция is_user_logged_in(), которая вернет true, если пользователь авторизован. Добавляем условие

<?php if(is_user_logged_in()) {?>
    Код
<?php } ?>

В моем случае вот, что получилось:

<?php if(is_user_logged_in()) {?>
<div class="aside-wrap">
    <div class="aside-title">
        <h2>Заказать сайт:</h2>
    </div>
    <div>
        <a class="btn btn-default" href="#" data-toggle="modal" data-target="#myModal" role="button" style="width: 100%;background-color: #3B5DAA;color:#fff;">Оставить заявку</a>
    </div>
</div>
<?php } ?>

Проверяем. Переходим на сайт – кнопку не видим. Теперь переходим на страницу авторизации и проходим авторизацию. Теперь кнопка появилась. Отлично.

Идем дальше, теперь нам надо проверить не только, что пользователь авторизован, а еще, что логи у пользователя admin.

Получение логина авторизованного пользователя WordPress

Для получения информации об авторизованном пользователя в WordPress есть функция get_userdata($userId), которая получает всю информацию о пользователе по его ID.

Теперь необходимо получить ID текущего пользователя. Для этого есть функция get_current_user_id().

Но так делать не очень хорошо. Функция get_userdata($userId) работает не очень быстро. А есть функция wp_get_current_user(), которая работает на порядок быстрее.

К нашему условию добавляем следующее:

<?php if(is_user_logged_in()) {?>
<?php $userInfo = wp_get_current_user();?>
<?php if($userInfo->user_login == 'admin') { ?>
    Код
<?php } ?>
<?php } ?>

Где:

  • $userInfo = wp_get_current_user() – получаем информацию о пользователе
  • if($userInfo->user_login == ‘admin’) – проверяем логин текущего пользователя

Вот, что получилось в моем случае:

<?php if(is_user_logged_in()){ ?>
<?php $userId = get_current_user_id()?>
<?php $userInfo = get_userdata($userId);?>
<?php if($userInfo->user_login == 'admin') { ?>
    <div class="aside-wrap">
        <div class="aside-title">
            <h2>Заказать сайт:</h2>
        </div>
        <div>
            <a class="btn btn-default" href="#" data-toggle="modal" data-target="#myModal" role="button" style="width: 100%;background-color: #3B5DAA;color:#fff;">Оставить заявку</a>
        </div>
    </div>
<?php }?>
<?php }?>

Проверяем. Теперь кнопка отображается только тогда, когда авторизован пользователь с логином admin.

Заключение

Мы с вами сделали проверку авторизован ли пользователь в WordPress. А затем сделали вывод контента только авторизованному пользователю, который имеет логин «admin».

Не забываем подписаться: VK, twitter и facebook, чтобы не пропустить выхода новых статей.

Понравилась статья? Поделись с друзьями.
  • Add to favorites
  • Добавить ВКонтакте заметку об этой странице
  • Twitter
  • Facebook
  • Мой Мир
  • LiveJournal
  • Одноклассники
  • Блог Я.ру
  • MySpace
  • FriendFeed
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • Reddit
  • StumbleUpon
  • Technorati
  • del.icio.us
  • БобрДобр
  • LinkedIn
  • Memori.ru
  • Сто закладок
  • Blogger

©2012-2018 По всем вопросам обращайтесь через форму обратной связи

Яндекс.Метрика