wp_redirect() - headere deja trimise
Încerc să folosesc wp_redirect()
pentru a redirecționa utilizatorul după completarea cu succes a unui formular de înregistrare pe pagină.
Nu funcționează și afișează următoarea eroare:
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
Înțeleg că a existat deja un output înainte, de aceea nu funcționează, dar nu am idee cum să fac să meargă.
Formularul de înregistrare este randat de o funcție și este trimis de o altă funcție, în interiorul fișierului functions.php.
if ( isset( $_POST['subscribe'] ) ) {
// Trimite formularul și ar trebui să redirecționeze apoi
wp_redirect("/thank-you/");
exit;
}
Apoi ambele funcții sunt folosite acolo unde vreau să afișez formularul de înregistrare.
Mi-e teamă că nu este cea mai bună abordare. Ar trebui să creez o acțiune care să facă asta, dar nu am idee cum să implementez. Majoritatea tutorialelor pe care le-am găsit arată rezultatele direct pe aceeași pagină și nu necesită o redirecționare suplimentară. Probabil de aceea funcționează cu funcții în interiorul fișierului functions.php

Am găsit răspunsul (prin)
În loc să folosesc funcția direct, am adăugat o acțiune la "wp_loaded", ceea ce asigură că aceasta se încarcă înainte de a fi trimise orice anteturi.
<?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;
}
}
?>

Mulțumesc pentru ajutor, dar acel cod nu a funcționat pentru mine. A trebuit să adaug acțiunea la "wp_loaded" pentru a funcționa (Vezi răspunsul meu)
