Как использовать функции wordpress вне самого wp?

Решил написать небольшую (или большую) серию статей касаемо wordpress.
Первое, на что было немного сложно найти информацию в гугле и до чего пришлось дойти самому, это:
Как использовать функции wordpress вне самого вордпресса?
Для особо быстрых и не желающих читать тонны букв:
Нужно просто подключить скрипт wp-load.php, который находится в корне вордпресса.
Для остальных, которым интересно поподробнее, читаем дальше.

Допустим, у вас есть какой-то файл, который находится вне самого вордпресса. Это может быть отдельный самописный сайт, форум или просто обычный скрипт авторизации на каком-то своём сайте — что угодно.
Попробую показать на примере формы авторизации где-то вне вордпресса

Задача:
— Есть форма с двумя полями для логина и пароля, чекбоксом и кнопкой для входа. Нужно авторизовать пользователя в системе вордпресс

Для начала, нужно создать саму форму 😀

<?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 которую мы для примера будем использовать, умеет вытаскивать логин, пароль и запоминалку прямо из поста. Конечно, можно передать учетные данные и самостоятельно, если вы достаёте их откуда-то из другого места. Но так делать мы сейчас не будем 🙂
Если интересно как, то добро пожаловать под спойлер

Как передать учетные данные не из поста

Функция wp_signon может принимать два параметра. Один из них — массив с данными, а второй — нужно ли использовать защитные куки. По умолчанию фолс (false)
Т.е. передать их можно как-то так:

$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 кода допишем авторизацию и в случае успешной авторизации переадресуем пользователя на какую-нибудь страничку. Например, на главную самого вордпресса )

Значит, в место для PHP кода нам нужно подключить wp-load.php из корня вордпресса. Допустим, вордпресс находится в папке wp, а наш скрипт авторизации в корневой папке.

Получается что-то примерно такое:

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
	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>

Как видите, всё очень просто. Если есть вопросы, то пишите в комментарии )