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?

Derfder
fonte

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.

Krzysiek Dróżdż
fonte
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.

brianjohnhanna
fonte
6
Se você estiver redirecionando para um endereço local, use wp_safe_redirect().
Nathan Johnson