wp_redirect() - headers già inviati
Sto cercando di usare wp_redirect()
per reindirizzare l'utente dopo l'invio con successo di un form di registrazione sulla pagina.
Non funziona e mostra il seguente errore:
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
Capisco che c'è già stato un output prima, ed è per questo che non funziona, ma non ho idea di come farlo funzionare.
Il form di registrazione viene renderizzato da una funzione e viene inviato da un'altra funzione, all'interno del mio functions.php.
if ( isset( $_POST['subscribe'] ) ) {
// Invia il form e dovrebbe poi reindirizzare
wp_redirect("/thank-you/");
exit;
}
Poi entrambe queste funzioni vengono utilizzate dove voglio mostrare il form di registrazione.
Temo che non sia il modo migliore di procedere. Dovrei creare qualche action che lo faccia, ma non ho idea di come implementarla. La maggior parte dei tutorial che ho trovato mostrano i risultati direttamente sulla stessa pagina e non richiedono un reindirizzamento aggiuntivo. Forse è per questo che funzionano con le funzioni all'interno del functions.php

Trovata la risposta (via)
Invece di utilizzare la funzione direttamente, ho aggiunto un'azione a "wp_loaded", che assicura che venga caricata prima che qualsiasi header venga inviato.
<?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;
}
}
?>

Grazie per l'aiuto, ma quel codice non ha funzionato per me. Ho dovuto aggiungere l'azione a "wp_loaded" per farlo funzionare (Vedi la mia risposta)
