wp_redirect () - cabeçalhos já enviados

9

Estou tentando usar wp_redirect() para redirecionar o usuário depois de enviar com êxito um formulário de inscrição na página.

Não está funcionando e mostra o seguinte erro:

  

Aviso: não é possível modificar as informações do cabeçalho - cabeçalhos já enviados por   (saída iniciada em   /Applications/MAMP/htdocs/theme/wp-content/themes/test/header.php:10)   em /Applications/MAMP/htdocs/theme/wp-includes/pluggable.php on line   1178

Eu entendo que já houve saída antes, é por isso que não está funcionando, mas não tenho ideia de como fazer isso funcionar.

O formulário de inscrição é renderizado por uma função e é submetido por outra função, dentro do meu functions.php.

if ( isset( $_POST['subscribe'] ) ) {
    // Submits the form and should then redirect
    wp_redirect("/thank-you/");
    exit;
}

Em seguida, essas duas funções são usadas onde quero mostrar o formulário de inscrição.

Receio que não seja a melhor coisa a fazer. Eu deveria estar criando alguma ação que faz isso, mas não tenho idéia de como implementar isso. A maioria dos tutoriais encontrados mostra os resultados diretamente na mesma página e não requer um redirecionamento adicional. Talvez seja por isso que eles estão trabalhando com funções dentro do functions.php

    
por Snowball 23.02.2015 / 12:37

3 respostas

15

Encontrou a resposta (via)

Em vez de usar a função, adicionei uma ação a "wp_loaded", que garante que ela seja carregada antes que qualquer cabeçalho seja enviado.

<?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;
    }
}     
?>
    
por Snowball 23.02.2015 / 13:08
3

Você precisa usar wp_redirect() antes de get_header() Então não mostrará o erro de cabeçalho.

    
por mynamAvinash 23.02.2015 / 13:07
2
add_action('template_redirect', function(){
if(isset($_POST['subscriptio'])){// make this condition such that it only matches when a registraiotn form get submitted
/**
 * do your stuff here
 */
wp_redirect();//....
}
});
    
por Abhisek Malakar 23.02.2015 / 12:43