adam erstelle
Estoy trabajando en un sitio web con WordPress 3.7.1 e intento redirigir a un usuario al iniciar sesión a través del parámetro de URL redirect_to.
Verifiqué que el backend del formulario de inicio de sesión ve el parámetro redirect_to GET, y que el envío de inicio de sesión incluye el valor redirect_to POST… pero ahí es donde las cosas no funcionan.
Enlace eliminado y credenciales de usuario
Al iniciar sesión (tanto para mi cuenta de administrador como para la cuenta de suscriptor proporcionada en esta publicación), el usuario es llevado al panel de WP en lugar de la URL en el parámetro redirect_to.
Tengo los allow_redirect_hosts configurados, con el siguiente código en un archivo de complemento personalizado (que es más o menos esto).
add_filter( 'allowed_redirect_hosts' , 'glue_allowed_redirect_hosts' , 10 );
function glue_allowed_redirect_hosts($content){
$content[] = 'app.realestategradschool.com';
$content[] = 'dev-app.realestategradschool.com';
$content[] = 'app.realestategradschool.local';
return $content;
}
He deshabilitado todos los demás complementos en un intento de solucionar este problema.
Editar: no puedo usar login_redirect porque no busco redirigir TODOS los inicios de sesión… solo si el visitante es enviado a la página de inicio de sesión desde un sitio diferente (usando oAuth para iniciar sesión… oAuth funciona… simplemente no la redirección)
Editar: solución de trabajo:
function glue_login_redirect($redirect_to,$request="",$user=null){
//using $_REQUEST because when the login form is submitted the value is in the POST
if(isset($_REQUEST['redirect_to'])){
$redirect_to = $_REQUEST['redirect_to'];
}
return $redirect_to;
}
add_filter('login_redirect','glue_login_redirect',999);
Bilal
Puedes usar login_redirect
filtrar. Mira aquí
http://codex.wordpress.org/Plugin_API/Filter_Reference/login_redirect
Creo que esto es lo que estás buscando.
Esto normalmente redirigirá todos los inicios de sesión. Para poder redirigir solo cuando lo desee, puede usar un parámetro de cadena de consulta en la URL. Verifique el parámetro, si existe redirigir.
-
Esta solución obliga a todos los inicios de sesión a ser redirigidos… Solo quiero algunos de ellos. Edité mi pregunta original con esta información.
– Adam Erstelle
5 de diciembre de 2013 a las 19:50
-
Entonces, puede capturar un parámetro de cadena de consulta en
login_redirect
método y solo redirigir si ese parámetro cumple su condición. Por ejemplo, en el escenario actual está obteniendo unredirect_to
parámetro. Puede obtener esto y verificar si es igual a algún valor, luego redirigirlo.– Billal
5 de diciembre de 2013 a las 19:54
-
Este enfoque terminó funcionando. He publicado mi código de trabajo en la pregunta original (ya que admite formato). Concederé la recompensa tan pronto como me lo permitan.
– Adam Erstelle
5 de diciembre de 2013 a las 20:17
Rafa Sashi
Intente agregar esto en su archivo functions.php de plantilla:
add_action( 'login_form' , 'glue_login_redirect' );
function glue_login_redirect() {
global $redirect_to;
if (!isset($_GET['redirect_to'])) {
$redirect_to = 'YOURURLHERE';
}
else{
$redirect_to = $_GET['redirect_to'];
}
}
-
Esta solución obliga a todos los inicios de sesión a ser redirigidos… Solo quiero algunos de ellos. Edité mi pregunta original con esta información.
– Adam Erstelle
5 de diciembre de 2013 a las 19:50
-
por qué no filtra dentro de la función: SI el visitante es enviado a la página de inicio de sesión desde un sitio diferente por oAuth ENTONCES redirigir de acuerdo con allow_redirect_hosts
– Rafa Sashi
5 de diciembre de 2013 a las 20:08
Tal vez este código te ayude.
<input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" />
Redirige a los usuarios desde donde inician sesión. ejemplo. si inicia sesión desde la página de inicio o la publicación. Su inicio de sesión luego redirigirá a la página de inicio o la página de inicio de sesión.
Esta parte principal del código es:
<?php echo $_SERVER['REQUEST_URI']; ?>
La otra cosa que tengo en ese archivo de complemento es una declaración de wp_validate_redirect donde copié el código de WordPress CORE y simplemente agregué una sola declaración de depuración. Mi problema sigue siendo si este código se deja intacto o no.
– Adam Erstelle
3 de diciembre de 2013 a las 16:47
¿Por qué no usar?
login_redirect
ya lo usaste ?– El Alfa
5 de diciembre de 2013 a las 19:41
Su
login_redirect
el código no funcionó para mí.–Andrew Truckle
6 de noviembre de 2019 a las 19:36
Han pasado algunos años desde que se publicó esto, es posible que las cosas hayan cambiado desde entonces.
– Adam Erstelle
9 de noviembre de 2019 a las 1:33