Функция wp_is_application_passwords_available()
проверяет, доступна ли в текущем окружении система паролей приложений в WordPress. Эта система предоставляет пользователям возможность генерировать уникальные пароли для доступа к сайту через API, не используя основные учётные данные.
wp_is_application_passwords_available(): bool
Описание
По умолчанию система паролей приложений доступна для сайтов, работающих через SSL, или для локальных окружений. Если сайт не использует SSL и не является локальным, эта функция вернёт false
, что может потребовать дополнительных настроек безопасности для включения паролей приложений.
Возвращаемое значение
- true: Пароли приложений доступны для использования.
- false: Пароли приложений недоступны для текущего окружения.
Как работает функция
Функция делает проверку на наличие SSL-сертификата или на то, работает ли сайт в локальной среде. Если ни одно из этих условий не выполнено, она вернёт false
. Это важная проверка, чтобы защитить сайт от небезопасного использования паролей приложений.
Применение
Функция полезна для проверки доступности паролей приложений перед выполнением API-запросов или других задач, требующих аутентификации.
Пример использования 1: Проверка доступности паролей приложений
В этом примере мы проверим, доступны ли пароли приложений, и выведем сообщение в зависимости от результата.
if ( wp_is_application_passwords_available() ) {
echo 'Пароли приложений доступны для использования.';
} else {
echo 'Пароли приложений недоступны в этом окружении.';
}
В этом простом примере функция проверяет, можно ли использовать пароли приложений, и выводит соответствующее сообщение.
Пример использования 2: Использование паролей приложений в REST API
Этот пример демонстрирует, как можно использовать функцию wp_is_application_passwords_available()
в кастомном REST API для проверки, доступны ли пароли приложений.
add_action( 'rest_api_init', function() {
register_rest_route( 'example/v1', '/secure-endpoint/', array(
'methods' => 'POST',
'callback' => 'handle_secure_request',
'permission_callback' => 'check_application_password_availability',
));
});
function check_application_password_availability() {
if ( ! wp_is_application_passwords_available() ) {
return new WP_Error( 'application_passwords_disabled', 'Пароли приложений недоступны.', array( 'status' => 403 ) );
}
return true;
}
function handle_secure_request( WP_REST_Request $request ) {
// Обработка запроса
return array( 'status' => 'Доступ разрешён.' );
}
В этом примере мы создаём REST API маршрут и проверяем доступность паролей приложений с помощью функции wp_is_application_passwords_available()
. Если пароли недоступны, маршрут возвращает ошибку.
Пример использования 3: Проверка паролей приложений в административной панели
Вы можете использовать эту функцию для отображения предупреждений в админ-панели WordPress, если пароли приложений недоступны. Это может помочь администраторам сайта быть в курсе ограничений безопасности.
add_action( 'admin_notices', 'check_application_password_availability_notice' );
function check_application_password_availability_notice() {
if ( ! wp_is_application_passwords_available() ) {
echo '<div class="notice notice-error"><p>Пароли приложений недоступны. Убедитесь, что сайт работает через SSL или в локальном окружении.</p></div>';
}
}
В этом примере, если пароли приложений недоступны, в административной панели WordPress будет отображено уведомление.
Пример использования 4: Кастомизация поведения через фильтр
Вы можете изменить логику работы функции с помощью фильтра wp_is_application_passwords_available
. Например, вы можете разрешить использование паролей приложений на всех сайтах, даже если они не используют SSL.
add_filter( 'wp_is_application_passwords_available', 'custom_application_password_availability', 10, 1 );
function custom_application_password_availability( $available ) {
// Разрешаем пароли приложений всегда
return true;
}
этом примере мы принудительно разрешаем использование паролей приложений, даже если сайт не соответствует стандартным критериям доступности.
Пример использования 5: Возвращение ошибки в зависимости от состояния паролей
Когда нужно выполнять более сложную логику при работе с API, проверку можно сделать на этапе выполнения запроса. В этом примере мы создаём маршрут, который возвращает ошибку, если пароли приложений недоступны.
add_action( 'rest_api_init', function () {
register_rest_route( 'myplugin/v1', '/check-passwords/', array(
'methods' => 'GET',
'callback' => 'check_passwords_availability',
) );
} );
function check_passwords_availability() {
if ( ! wp_is_application_passwords_available() ) {
return new WP_Error(
'application_passwords_unavailable',
__( 'Application passwords are not available for this environment.' ),
array( 'status' => 503 )
);
}
return array(
'status' => 'available',
'message' => 'Application passwords are enabled and available for use.',
);
}
В этом примере, если система паролей приложений недоступна, возвращается сообщение об ошибке с кодом 503. В случае успеха возвращается сообщение о доступности паролей.
Заключение
Функция wp_is_application_passwords_available()
играет важную роль в проверке безопасности и доступности паролей приложений в WordPress. Она автоматически определяет, можно ли использовать эту систему, и предоставляет разработчикам возможность кастомизировать логику через фильтры. Это делает функцию полезной для интеграций с REST API и других сценариев, где необходимо проверять доступность паролей приложений перед выполнением задач.