wp_redirect() - заголовки уже отправлены
Я пытаюсь использовать wp_redirect()
для перенаправления пользователя после успешной отправки формы регистрации на странице.
Это не работает и показывает следующую ошибку:
Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/theme/wp-content/themes/test/header.php:10) in /Applications/MAMP/htdocs/theme/wp-includes/pluggable.php on line 1178
Я понимаю, что уже был выведен контент до этого, поэтому это не работает, но я не знаю, как исправить эту проблему.
Форма регистрации отображается с помощью одной функции и отправляется другой функцией внутри файла functions.php.
if ( isset( $_POST['subscribe'] ) ) {
// Отправляет форму и должен выполнить перенаправление
wp_redirect("/thank-you/");
exit;
}
Затем обе эти функции используются там, где я хочу показать форму регистрации.
Боюсь, что это не лучшее решение. Я должен создать какое-то действие, которое выполняет это, но я не знаю, как это реализовать. Большинство уроков, которые я нашел, показывают результаты прямо на той же странице и не требуют дополнительного перенаправления. Возможно, поэтому они работают с функциями внутри functions.php

Нашел ответ (источник)
Вместо непосредственного использования функции, я добавил действие к хуку "wp_loaded", что гарантирует выполнение до отправки любых заголовков.
<?php
add_action ('wp_loaded', 'my_custom_redirect');
function my_custom_redirect() {
if ( isset( $_POST['subscribe'] ) ) {
$redirect = 'http://example.com/redirect-example-url.html';
wp_redirect($redirect);
exit;
}
}
?>
