Разработка и сопровождение

Постоянная авторизация в Wordpress

03.12.2022 12:00

При разработке сайта на WordPress довольно часто приходится выполнять какие-то действия в админке (установка плагина, редактирование записи и так далее). При этом каждый раз нужно авторизоваться (пусть даже сессия сохраняется в кукисах, они все равно они умирают).

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

Рассмотрим два пути.

Первый из них состоит в том, чтобы убрать систему логирования как таковую :)

Ясное дело, этот путь стоит применять только в том случае, если к сайту никто, кроме вас, не имеет доступа (например localhost).

Второй путь - модифицировать несколько файлов системы и наслаждаться результатом.

Убираем систему логирования

Это решение можно использовать только для тестирования или на этапе разработки в зазщищенной стреде (т.е. только для себя).

Оно состоит в том, чтобы отредактировать файл по пути wp-includes/pluggable.php. Там находим функцию wp_validate_auth_cookie().

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

Конечно же, сделайте бэкап этого файла, или сохраните где-нибудь тело этой функции перед внесением изменений. Вообще, всегда нужно делать бэкап перед необратимым изменением, удалением чего-либо, особенно если это база данных =)

Заменяем эту функцию на следующий код:

function wp_validate_auth_cookie($cookie = '', $scheme = '') {
  $user_ID = (int) 1; // id админа 
  return $user_ID;
}

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

Продлеваем сессию.

Этот способ можно использовать не только в том случае, если никто не имеет доступа к вашему сайту. Например, вам лень часто логинится и вы хотите чтобы WordPress надолго вас «запомнил».

По умолчанию, когда вы авторизуетесь, кнопка «Запомнить меня» позволяет забыть про авторизацию на 2 недели.

Следующая функция заставить запомнить вас на год:

function keep_me_logged_in_for_1_year($expirein) { 
  return 31556926; // 1 год в секундах
} 
add_filter('auth_cookie_expiration', 'keep_me_logged_in_for_1_year');

Вставьте ее в файл functions.php вашей темы.

На этом все :) Какой способ выбрать зависит от ваших потребностей.

Платон Чукин