Wp_redirect y envío de variables


12

¿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, capturaré la variable en 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?

Respuestas:


10

Me temo que no puedes hacerlo de esta manera.

wp_redirectes una forma elegante de enviar encabezado Locationy el segundo argumento de esta función es el estado de la solicitud y no la variable personalizada. (404, 301, 302, y así sucesivamente).

Puede enviar algunas variables como parámetros de obtención. Entonces puedes hacer algo como esto:

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

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


1
También podría establecer una cookie, supongo.
Ben Polinsky

Debe usar add_query_arg para hacerlo a la manera de WordPress.
Shivanand Sharma

@ShivanandSharma puede, pero no es necesario usar add_query_arg para agregar solo un argumento a la URL sin ningún otro argumento de consulta.
Krzysiek Dróżdż

10

Tarde a la fiesta con este, pero la "forma de Wordpress" para hacerlo sería add_query_argasí:

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á capturar la variable, entonces, en la página de inicio (o página de blog, dependiendo de cómo home_url()esté configurada) accediendo $_GET['variable_to_send']a su código PHP.

Si va a hacer esto functions.php, asegúrese de enganchar inito un enganche temprano similar o de lo contrario obtendrá un error "Encabezados ya enviados".

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


66
Si está redirigiendo a una dirección local, debe usar wp_safe_redirect().
Nathan Johnson el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.