Wp_redirect e enviando variáveis

11

Como enviar algumas variáveis com wp_redirect () do arquivo function.php na pasta do meu tema?

if ( $post_id ) {
    $variable_to_send = '1';
    wp_redirect( home_url(), $variable_to_send );
    exit;
}

E na página inicial eu vou pegar a variável na condição if-else para mostrar alguma confirmação ou não dependendo se $variable_to_send = '1' ou não.

Como fazer isso no WordPress?

    
por Derfder 05.08.2013 / 21:41

2 respostas

10

Eu tenho medo de que você não possa fazer isso dessa maneira.

wp_redirect é uma maneira sofisticada de enviar o cabeçalho Location e o segundo argumento dessa função é o status da solicitação e não a variável personalizada. (404, 301, 302 e assim por diante).

Você pode enviar algumas variáveis como obter parâmetros. Então você pode fazer algo assim:

if ( $post_id ) {
        $variable_to_send = '1';
        wp_redirect( home_url() .'?my_variable='.$variable_to_send );
        exit;
}

Depois, você pode usar essas variáveis como $_GET['my_variable'] ou registrá-las como variável get personalizada.

    
por Krzysiek Dróżdż 05.08.2013 / 21:47
5

Tarde para a festa com essa, mas a "forma Wordpress" para fazer isso seria usar add_query_arg assim:

if ( $post_id ) {
    wp_redirect( esc_url( add_query_arg( 'variable_to_send', '1', home_url() ) ) );
    exit;
}

Isso iniciará um redirecionamento para http://my.website/?variable_to_send=1 . Você poderia capturar a variável, então, na página inicial (ou na página do blog, dependendo de como o home_url() está configurado) acessando $_GET['variable_to_send'] em seu código PHP.

Se você for fazer isso em functions.php , certifique-se de conectar-se a init ou um gancho similarmente antigo ou então você receberá um erro "Cabeçalhos já enviados".

Espero que isso ajude alguém que se depara com este post.

    
por brianjohnhanna 23.03.2017 / 14:48