Как сделать аутентификацию в php файле при использовании WP REST API?

Для реализации аутентификации в PHP файле при использовании WP REST API вам понадобятся некоторые предварительные настройки и действия.

1. Установите и активируйте плагин JWT Authentication for WP REST API. Этот плагин добавляет поддержку JSON Web Tokens (JWT) для аутентификации WP REST API.

2. Создайте файл authenticate.php, который будет использоваться для аутентификации пользователя. Предположим, что вы разместили этот файл в корневой папке вашего WordPress-сайта.

3. Внутри файла authenticate.php добавьте следующий код:

<?php
require_once('wp-load.php');

$username = $_POST['username'];
$password = $_POST['password'];

$user = wp_authenticate($username, $password);
if (is_wp_error($user)) {
    // Аутентификация не удалась
    $response = array(
        'success' => false,
        'message' => 'Invalid username or password'
    );
    wp_send_json($response, 401);
} else {
    // Аутентификация успешна
    $user_id = $user->ID;
    $token = JWT::encode($user_id, 'your_secret_key'); // Замените 'your_secret_key' на свой секретный ключ

    $response = array(
        'success' => true,
        'token' => $token
    );
    wp_send_json($response);
}
?>

4. В вашем файле functions.php или в плагине добавьте следующий код, чтобы создать маршрут для аутентификации:

<?php
add_action('rest_api_init', function () {
    register_rest_route('myplugin/v1', '/authenticate', array(
        'methods' => 'POST',
        'callback' => 'myplugin_authenticate'
    ));
});

function myplugin_authenticate($data) {
    require_once('authenticate.php');
}
?>

5. Теперь у вас есть маршрут /myplugin/v1/authenticate, который выполняет аутентификацию при отправке POST-запроса с параметрами username и password. Если аутентификация прошла успешно, в ответ будет возвращен JWT токен.

6. Вы можете использовать этот токен для аутентификации в вашем клиентском приложении. Для этого в каждом запросе к WP REST API необходимо добавить заголовок Authorization, содержащий значение Bearer [токен], где [токен] - это JWT токен, полученный после успешной аутентификации.

Пример использования JWT токена для аутентификации в запросе выглядит следующим образом:

const token = 'your_token'; // Замените на ваш JWT токен

fetch('http://example.com/wp-json/wp/v2/posts', {
    method: 'GET',
    headers: {
        'Authorization': `Bearer ${token}`
    }
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));

Таким образом, вы реализовали аутентификацию в PHP файле при использовании WP REST API с помощью JWT токенов. Это обеспечивает безопасность ваших запросов и сохраняет пользовательские данные в зашифрованном виде.