Wp_redirect y envío de variables

11

¿Cómo enviar algunas variables con wp_redirect () desde el archivo function.php en mi carpeta de temas?

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

Y en la página de inicio detectaré la variable en la condición if-else para mostrar alguna confirmación o no, dependiendo de si $variable_to_send = '1' o no.

¿Cómo hacer eso en WordPress?

    
pregunta Derfder 05.08.2013 - 21:41

2 respuestas

10

Me temo que no puedes hacerlo de esta manera.

wp_redirect es una forma elegante de enviar el encabezado Location y el segundo argumento de esta función es el estado de la solicitud y no la variable personalizada. (404, 301, 302, etc.).

Puedes enviar algunas variables como parámetros de obtención. Así que puedes hacer algo como esto:

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

Luego puedes usar estas variables como $_GET['my_variable'] o registrarlo como variable de obtención personalizada.

    
respondido por el Krzysiek Dróżdż 05.08.2013 - 21:47
5

Llegó tarde a la fiesta con esta, pero la "forma de Wordpress" para hacerlo usaría add_query_arg me gusta así:

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

Esto iniciará una redirección a http://my.website/?variable_to_send=1 . Podrías capturar la variable, luego, en la página de inicio (o en la página del blog, dependiendo de la configuración de home_url() ) accediendo a $_GET['variable_to_send'] en tu código PHP.

Si vas a hacer esto en functions.php , asegúrate de engancharlo en init o en un gancho similar de forma temprana o de lo contrario obtendrás un error de "Encabezados ya enviados".

Esperemos que esto ayude a alguien que se tropiece con esta publicación.

    
respondido por el brianjohnhanna 23.03.2017 - 14:48

Lea otras preguntas en las etiquetas