Решил написать небольшую (или большую) серию статей касаемо wordpress.
Первое, на что было немного сложно найти информацию в гугле и до чего пришлось дойти самому, это:
Как использовать функции wordpress вне самого вордпресса?
Для особо быстрых и не желающих читать тонны букв:
Нужно просто подключить скрипт wp-load.php, который находится в корне вордпресса.
Для остальных, которым интересно поподробнее, читаем дальше.
Допустим, у вас есть какой-то файл, который находится вне самого вордпресса. Это может быть отдельный самописный сайт, форум или просто обычный скрипт авторизации на каком-то своём сайте - что угодно.
Попробую показать на примере формы авторизации где-то вне вордпресса
Задача:
- Есть форма с двумя полями для логина и пароля, чекбоксом и кнопкой для входа. Нужно авторизовать пользователя в системе вордпресс
Для начала, нужно создать саму форму :D
<?php //Место для PHP кода самой авторизации ?> <form action="" method="POST"> <p>Логин: <input type="text" name="log" /></p> <p>Пароль: <input type="text" name="pwd" /></p> <p><input type="checkbox" id="rememberme" name="rememberme" /><label for="rememberme">Запомнить меня</label></p> <input type="submit" value="Войти" /> </form>
Неймы у полей именно такие, потому что wp-функция wp_signon которую мы для примера будем использовать, умеет вытаскивать логин, пароль и запоминалку прямо из поста. Конечно, можно передать учетные данные и самостоятельно, если вы достаёте их откуда-то из другого места. Но так делать мы сейчас не будем :)
Если интересно как, то добро пожаловать под спойлер
[spoiler title='Как передать учетные данные не из поста']
Функция wp_signon может принимать два параметра. Один из них - массив с данными, а второй - нужно ли использовать защитные куки. По умолчанию фолс (false)
Т.е. передать их можно как-то так:
[php]
$login = 'super_login';
$pass = 'super_pass';
$remember = true;
$arrgs = array(
'log' => $login,
'pwd' => $pass,
'rememberme' => $remember
);
$user = wp_signon($arrgs, false);
//Если вдруг авторизация не получилась, то:
if ( is_wp_error($user) ) {
echo $user->get_error_message();
}
[/php]
[/spoiler]
Давайте в оставшееся место для PHP кода допишем авторизацию и в случае успешной авторизации переадресуем пользователя на какую-нибудь страничку. Например, на главную самого вордпресса )
Значит, в место для PHP кода нам нужно подключить wp-load.php из корня вордпресса. Допустим, вордпресс находится в папке wp, а наш скрипт авторизации в корневой папке.
Получается что-то примерно такое:
[php]
if (isset($_POST)) { //Проверяем, пришёл ли пост. Если да, то:
include "wp/wp-load.php";
$user = wp_signon();
//Если вдруг авторизация не получилась, то:
if ( is_wp_error($user) ) {
echo $user->get_error_message();
} else { //Если авторизация получилась, то
header("location: wp/"); //Переадресовываем на главную вордпресса
exit();
}
}
[/php]
Итоговый вариант:
<?php if (isset($_POST)) { //Проверяем, пришёл ли пост. Если да, то: include "wp/wp-load.php"; $user = wp_signon(); //Если вдруг авторизация не получилась, то: if ( is_wp_error($user) ) { echo $user->get_error_message(); } else { //Если авторизация получилась, то header("location: wp/"); //Переадресовываем на главную вордпресса exit(); } } ?> <form action="" method="POST"> <p>Логин: <input type="text" name="log" /></p> <p>Пароль: <input type="text" name="pwd" /></p> <p><input type="checkbox" id="rememberme" name="rememberme" /><label for="rememberme">Запомнить меня</label></p> <input type="submit" value="Войти" /> </form>
Как видите, всё очень просто. Если есть вопросы, то пишите в комментарии )