wp_redirect() - headers ya enviados
Estoy intentando usar wp_redirect()
para redirigir al usuario después de enviar exitosamente un formulario de registro en la página.
No está funcionando y muestra el siguiente error:
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
Entiendo que ya ha habido una salida antes, por eso no está funcionando, pero no tengo idea de cómo hacer que esto funcione.
El formulario de registro se renderiza mediante una función y se envía mediante otra función, dentro de mi functions.php.
if ( isset( $_POST['subscribe'] ) ) {
// Envía el formulario y debería redirigir
wp_redirect("/thank-you/");
exit;
}
Luego, estas dos funciones se utilizan donde quiero mostrar el formulario de registro.
Me temo que no es la mejor manera de hacerlo. Debería estar creando alguna acción que haga eso, pero no tengo idea de cómo implementarla. La mayoría de los tutoriales que encontré muestran los resultados directamente en la misma página y no requieren una redirección adicional. Tal vez por eso funcionan con funciones dentro del functions.php

Encontré la respuesta (vía)
En lugar de usar la función directamente, agregué una acción a "wp_loaded", lo que asegura que se cargue antes de que se envíen las cabeceras.
<?php
add_action ('wp_loaded', 'mi_redireccion_personalizada');
function mi_redireccion_personalizada() {
if ( isset( $_POST['subscribe'] ) ) {
$redireccion = 'http://example.com/redirect-example-url.html';
wp_redirect($redireccion);
exit;
}
}
?>

Gracias por la ayuda, pero ese código no funcionó para mí. Necesité agregar la acción a "wp_loaded" para que funcionara (Ver mi respuesta)
