Описание admin_post
— Action
Хук admin_post позволяет обрабатывать пользовательские запросы, отправленные через формы в админке WordPress. Он срабатывает, когда форма отправляется на URL, который включает в себя ‘admin-post.php’, и позволяет выполнять действия на основе значений, переданных в запросе
Примеры использования
Пример обработки пользовательского действия при отправке формы:
add_action('admin_post_custom_action', function() {
// Проверяем nonce для безопасности
check_admin_referer('my_nonce_action');
// Обрабатываем данные формы
$data = $_POST['my_data'];
// Выполняем необходимые действия, например, сохраняем данные
update_option('my_option', $data);
// Перенаправляем пользователя
wp_redirect(admin_url('admin.php?page=my_page'));
exit;
});
В этом примере мы обрабатываем данные, отправленные из формы с action ‘custom_action’, проверяем безопасность с помощью nonce и сохраняем данные в опции
Пример с использованием параметров в запросе:
add_action('admin_post_my_custom_action', function() {
$param = isset($_GET['param']) ? sanitize_text_field($_GET['param']) : '';
// Логика обработки
if ($param) {
// Делаем что-то с параметром
}
wp_redirect(admin_url('admin.php?page=my_custom_page'));
exit;
});
Здесь мы получаем параметр из GET-запроса и обрабатываем его, перед тем как перенаправить пользователя
— Лучшие практики
– Использование
Используйте этот хук, когда необходимо обрабатывать данные форм, отправленных из админки, обеспечивая безопасность с помощью nonce
– Производительность
Хук не должен негативно влиять на производительность, если обработка данных выполняется оптимально
– Предупреждения
Убедитесь, что используете проверку nonce для защиты от CSRF атак и корректно обрабатываете данные, полученные из формы
Альтернативы
Тип: action
Этот хук аналогичен admin_post, но используется для обработки запросов от незарегистрированных пользователей
Используйте его, если ваша форма должна быть доступна для всех пользователей, включая незарегистрированных