Wp_redirect y envío de variables

5 ago 2013, 22:41:27
Vistas: 42.7K
Votos: 15

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

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

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

¿Cómo hacer esto en WordPress?

0
Todas las respuestas a la pregunta 2
1
16

Llegando tarde a esta discusión, pero la "forma Wordpress" de hacerlo sería usando add_query_arg de la siguiente manera:

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

Esto iniciará una redirección a http://mi.sitio-web/?variable_to_send=1. Podrás capturar la variable luego, en la página de inicio (o página de blog, dependiendo de cómo tengas configurado tu 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 a init o a un hook similarmente temprano, de lo contrario obtendrás un error de "Headers already sent".

Espero que esto ayude a alguien que se encuentre con esta publicación.

23 mar 2017 15:48:30
Comentarios

Si estás redirigiendo a una dirección local, deberías usar wp_safe_redirect().

Nathan Johnson Nathan Johnson
23 mar 2017 17:17:59
3
14

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, no una variable personalizada. (404, 301, 302, etc.).

Puedes enviar algunas variables como parámetros GET. Entonces 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 registrarla como una variable GET personalizada.

5 ago 2013 22:47:29
Comentarios

También podrías configurar una cookie, supongo.

Ben Polinsky Ben Polinsky
5 ene 2017 21:35:49

Necesitas usar add_query_arg para hacerlo al estilo WordPress.

Shivanand Sharma Shivanand Sharma
16 ene 2019 08:16:22

@ShivanandSharma puedes hacerlo, pero no es necesario usar add_query_arg para agregar solo un argumento a la URL sin ningún otro parámetro de consulta.

Krzysiek Dróżdż Krzysiek Dróżdż
16 ene 2019 08:56:53