Wp_redirect e enviando variáveis


12

Como enviar algumas variáveis ​​com wp_redirect () do arquivo function.php na minha pasta de temas?

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

E, na página inicial, pegarei 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?

Respostas:


10

Receio que você não possa fazer dessa maneira.

wp_redirecté uma maneira elegante de enviar cabeçalho Locatione 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;
}

Em seguida, você pode usar essas variáveis ​​como $_GET['my_variable']ou registrá-las como variáveis ​​personalizadas.


1
Você também pode definir um cookie, suponho.
quer

Você precisa usar add_query_arg para fazer isso da maneira do WordPress.
Shivanand Sharma

@ShivanandSharma, você pode, mas não há necessidade de usar add_query_arg para adicionar apenas um argumento ao URL sem nenhum outro argumento de consulta.
Krzysiek Dróżdż

10

Tarde para a festa com este, mas a "maneira Wordpress" de fazê-lo usaria add_query_argassim:

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ê seria capaz de capturar a variável, então, na página inicial (ou na página do blog, dependendo de como home_url()está configurada) acessando o $_GET['variable_to_send']seu código PHP.

Se você quiser fazer isso functions.php, certifique-se de conectar initum ou um gancho similar da mesma forma, caso contrário, você receberá um erro "Cabeçalhos já enviados".

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


6
Se você estiver redirecionando para um endereço local, use wp_safe_redirect().
Nathan Johnson
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.