Темы:

Авторизация в шаблоне wordpress

На сайте часто возникает необходимость ограничить доступ пользователей к материалам. Как ни странно, оказалось, что в wordpress, это сделать на удивление сложно.

Вернее, естественно, есть функция «пароль» для страницы. Но мне необходимо было прятать и пункты меню, и выдавать авторизацию, в случае неудачной попытки перехода по ссылке.

Потратив час и несколько сотен ватт электроэнергии я запасся:

  • модулем User Access Manager для wordpress;
  • листингом от wp-skins.

Итак. Ставим модуль. В нем достаточно легко разобраться – много настроек, все человечески расположено. Создал спецгруппу, скрыл кнопки в меню.

Для того, что бы вывести форму авторизации на обычную страницу, поясняющую такую необходимость, воспользовался листингом от wp-skins.info, спасибо ребятам:

    <?php if (!(current_user_can('level_0'))){ ?>
    <h2>Войти</h2>
    <form action="<?php echo get_option('home'); ?>/wp-login.php" method="post">
    <input type="text" name="log" id="log" value="<?php echo wp_specialchars(stripslashes($user_login), 1) ?>" size="20" />
    <input type="password" name="pwd" id="pwd" size="20" />
    <input type="submit" name="submit" value="Send" class="button" />
    <p>
    <label for="rememberme"><input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /> Запомнить меня</label>
    <input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" />
    </p>
    </form>
    <a href="<?php echo get_option('home'); ?>/wp-login.php?action=lostpassword">Забыли пароль?</a>
    <?php } else { ?>
    <h2>Выйти</h2>
    <a href="<?php echo wp_logout_url(urlencode($_SERVER['REQUEST_URI'])); ?>">Выход</a><br />
    <a href="http://<?php bloginfo(’url’) ?>/wp-admin/">admin</a>
    <?php }?>

Вроде бы и не сложно, а пришлось попотеть, разыскивая его. Создаем специальный шаблон для страницы, предлагающей авторизацию – в моем случае названный page-auth.php. И к стандартному шаблону страницы, под loop, добавляем листинг для вызова авторизации. Вроде бы все.

Wordpress