Статьи

Автоматический вход администратора Wordpress в PHP

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

ИМЯ ПОЛЬЗОВАТЕЛЯ: демо
ПАРОЛЬ: демо

Это немного пешеходный. Неужели мы можем сделать демо-версию более обтекаемой и профессиональной? Я дам вам небольшой фрагмент кода для автоматического входа в систему администратора WordPress с этими учетными данными. Его можно либо поместить в файл функций вашей темы, либо поместить в отдельный файл плагина и активировать.

Это может быть полезно, если;

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

ВАЖНО: Никогда не используйте это для входа в учетные записи с реальной властью; например. Учетные записи администратора / редактора и т.д.

Используйте этот фрагмент осторожно.

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

Автоматический вход администратора Wordpress в PHP

function autologin() {
    
    if ($_GET['autologin'] == 'demo') {
        
        $creds['user_login'] = 'demo';
        
        $creds['user_password'] = 'demo';
        $creds['remember'] = true;
        $autologin_user = wp_signon( $creds, false );
        if (!is_wp_error($autologin_user)) header('Location: wp-admin'); 
    }
}

add_action( 'after_setup_theme', 'autologin' );

ПРИМЕНЕНИЕ

Это очень просто использовать. Имя пользователя и пароль учетной записи указаны в файле плагина (код выше), и для входа вам просто нужно зайти; http://example.com/wp-login.php?autologin=demo

Вы должны сразу же быть перенаправлены на wp-admin, войдя в указанную учетную запись. Если учетные данные неверны, вы должны просто увидеть обычную форму входа.

НАСТРОЙКА

Этот фрагмент очень легко настроить. По сути, вам нужно будет отредактировать только 3 вещи, и все эти изменения должны быть внесены в следующий блок кода (строки с 11 по 17 полного кода).

if ($_GET['login'] == 'dummy_account') {
        
        $creds['user_login'] = 'dummy';
        
        $creds['user_password'] = 'pa55word';

В первой строке вы увидите условную проверку параметра URL. Приведенный выше блок кода будет проверять; wp-login.php? login = dummy_account

Эти значения могут быть любыми, но будьте осторожны, чтобы избежать исходных параметров WordPress, таких как loggedout, action и redirect_to. Строка 4 – это то место, где вы указываете имя пользователя для входа в систему; настраиваемый фрагмент кода попытается войти в «фиктивную» учетную запись. Как вы, наверное, догадались, в строке 7 вы указываете пароль. Пароль выше – pa55word. Заполните эти значения, и все будет хорошо!

РАСШИРЕНИЯ

На данный момент наш сниппет настроен только для автоматического входа в одну учетную запись. Что, если нам нужны разные ссылки для входа в разные учетные записи? Это довольно быстро и легко сделать, и вам не нужно повторять весь фрагмент снова и снова. Взгляните на мое решение ниже.


global $login_parameter, $accounts;


$login_parameter = "autologin";

$accounts[] = array(
                "user" => "demo",
                "pass" => "demo",
                "location" => "wp-admin",
              );



$accounts[] = array(
                "user" => "tcwp",
                "pass" => "demo",
                "location" => "wp-admin/?tcwp-sent-me",
              );

function autologin() {
    global $login_parameter, $accounts;
    foreach ($accounts as $account) {
        if ($_GET[$login_parameter] == $account['user']) {
            $creds['user_login'] = $account['user'];
            $creds['user_password'] = $account['pass'];
            $creds['remember'] = true;
            $autologin_user = wp_signon( $creds, false );
            if (!is_wp_error($autologin_user)) header('Location: '. $account['location']); 
        }
    }
}
add_action( 'after_setup_theme', 'autologin' );

По сути, это то же самое, но с добавлением дерзкого цикла foreach и массива учетных записей. Анатомия функции autologin() идентична, за исключением того факта, что ее код повторяется (с использованием цикла foreach) для каждой учетной записи. Все необходимые детали теперь хранятся в глобальном массиве. Приведенный выше пример настроен для 2 учетных записей, но наш фрагмент может вместить столько, сколько нам нужно. Чтобы добавить дополнительные учетные записи, просто настройте и добавьте столько блоков кода, сколько вам нужно.

$accounts[] = array(
                "user" => "anotheraccount",
                "pass" => "public_password",
                "location" => "http://YouCanPutURLsHereToo.com/",
              );

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

ЗАКЛЮЧЕНИЕ

Этот фрагмент – всего лишь простая функция, предназначенная для легкого использования, например, на демонстрационном сайте продукта, но потенциально может использоваться для гораздо более сложных сценариев входа в систему. Остальная часть кода должна быть довольно понятной, но если у вас есть какие-либо вопросы о том, что я сделал или почему я это сделал, просто оставьте комментарий ниже или напишите мне в Твиттере. Если у вас есть отзывы / предложения / идеи, оставьте комментарий в разделе комментариев ниже!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Кнопка «Наверх»

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: