¿Quieres redirigir a los usuarios de vuelta a la página que estaban viendo después de iniciar sesión? Aunque probablemente haya un plugin para esto, hemos creado un fragmento de código rápido que puedes usar para redirigir WordPress de vuelta a la página de referencia después de iniciar sesión.
Instrucciones:
Todo lo que tienes que hacer es agregar este código al archivo functions.php de tu tema o a un plugin específico del sitio:
if ( (isset($_GET['action']) && $_GET['action'] != 'logout') || (isset($_POST['login_location']) && !empty($_POST['login_location'])) ) {
add_filter('login_redirect', 'my_login_redirect', 10, 3);
function my_login_redirect() {
$location = $_SERVER['HTTP_REFERER'];
wp_safe_redirect($location);
exit();
}
}
Nota: Si es la primera vez que agregas fragmentos de código en WordPress, consulta nuestra guía sobre cómo copiar / pegar fragmentos de código correctamente en WordPress, para que no rompas accidentalmente tu sitio.
Si te gustó este fragmento de código, considera echar un vistazo a nuestros otros artículos en el sitio como: los 62 mejores temas gratuitos de WordPress para blogs y cómo crear un formulario de contacto en WordPress.
Gracias por tu artículo.
¿Podrías proporcionar el fragmento de código completo para la misma acción con WooCommerce, ya que intenté agregar las diferentes partes del código pero me temo que cometí algunos errores. El resultado ha fallado.
Muchas gracias de antemano.
¿Y existe el mismo código para el proceso de cierre de sesión?
Quiero que cualquier usuario que inicie sesión desde una página que diga https://example.com/asset/* sea redirigido de regreso a esa página después de iniciar sesión. ¿Qué tengo que hacer para que esto funcione?
¿Solo quieres redirigir en https://example.com/asset/*?
El fragmento anterior debería redirigir las URL de las páginas en general.
Hola, ¿el código funciona bien con el plugin Ultimate Member?
Hola,
No puedo hacerlo funcionar.
Uso esto:
add_action(‘init’,’custom_login’);
function custom_login(){
global $pagenow;
$substitute_login_page = str_replace(‘wp-login.php’,’my-account’, $pagenow);
if( ‘wp-login.php’ == $pagenow && $_GET[‘action’]!=”logout” && $_GET[‘action’]!=”lostpassword”) {
wp_redirect($substitute_login_page);
exit();
}
}
para usar la página de inicio de sesión de Woocommerce en lugar de wp-login.php (mi sitio web es una tienda en línea). Y funciona.
Intento devolver al usuario a la página de publicación de blog/producto individual vista antes de iniciar sesión usando el filtro que se enumera aquí ( add_filter(‘woocommerce_login_redirect’, ‘wc_login_redirect’); ), pero no funciona.
Supongo que el filtro y mi acción no pueden funcionar juntos. Creo que la página de inicio de sesión de Woocommerce elimina la parte de redirección de la URL.
¿Cómo puedo lograr la redirección a la página anterior después de iniciar sesión en la página de mi cuenta?
¡Gracias de antemano!
Lamentablemente, puede haber varias causas. Quizás quieras probar con una prioridad diferente para el filtro.
¡¡GUAU!! ese me funcionó perfectamente. gracias
Me alegra que haya ayudado, Vinoth
¿Cómo tengo que modificar este código para redirigir a los usuarios después de un registro?
Hola Ole, espero que este fragmento te sirva: https://www.isitwp.com/redirect-a-successful-registration-page/
Si tienes más preguntas, no dudes en contactarnos.
Hola señor,
Estoy usando mi propio código para el registro e inicio de sesión. ¿Cómo uso allí el código mencionado anteriormente? Por favor, ayúdenme.
quiero de esta otra manera
quiero mostrar el producto antes de descargar o comprar, quiero hacer el inicio de sesión fácil para descarga digital
No estoy seguro de entender completamente lo que buscas. ¿Podrías dar más detalles?
Quiero mostrar primero el botón de iniciar sesión para descargar y si el usuario se registra e inicia sesión, el sitio debería mostrar los precios y si se hace clic, debería ir a la descarga como se muestra en la imagen.
https://snag.gy/rTRloi.jpg
Esto no me funciona usando WP 4.1.1 con el tema FULLBY y el plugin Simple WordPress Membership
Hola, esto no cambió nada para mí. ¿Alguna sugerencia? He estado buscando esta solución por un tiempo.
cuando inicias sesión para probar este script, ¿en qué página estás? ¿Estás en la página wp-login.php o en otra página?
Sí, en la página wp-login.php.
Esa sería la razón, la idea detrás de este fragmento es que si tienes un formulario de inicio de sesión en tu barra lateral o en otro lugar, por ejemplo. Estaría leyendo la publicación y luego ingresaría mis datos para iniciar sesión, luego iniciaría sesión y sería redirigido de regreso a la página desde la que inicié sesión.
De acuerdo, gracias. Entonces, solo estoy usando el widget estándar WP Meta Login. Cuando estás en una publicación antes de comentar, debes iniciar sesión. En la barra lateral está el widget Meta/Login que te lleva a la página wp-login.php cuando haces clic en ‘Iniciar sesión’. Una vez que has iniciado sesión en la página wp-login.php, devuelve al visitante a la página de inicio siempre, en lugar de a la publicación que estaba viendo antes. Por favor, hazme saber si tu código funcionará de alguna manera para esto. ¡Gracias!
Hola Karena,
envíame un mensaje a través del formulario de contacto, será más fácil. Los comentarios pueden volverse un poco largos.
Yo también necesito esto. Mi página de noticias restringe el contenido solo a suscriptores. Cuando un suscriptor carga un artículo, se muestra el mensaje de error, pero siempre pueden iniciar sesión usando el widget del formulario en la barra lateral. Mi problema es que cuando inician sesión correctamente, no se les redirige al último artículo en el que estaban.
¿Alguien sabe cómo hacer esto para un inicio de sesión de WooCommerce?
Intenta esto:
add_filter(‘woocommerce_login_redirect’, ‘wc_login_redirect’);
function wc_login_redirect( $redirect_to ) { $redirect_to = ‘http://mysite.com/shop’; return $redirect_to; }
¿Pero para redirigirte a la página de referencia, no a una página estática?
deberías poder usar el código de la muestra anterior, pero primero verificaría que el código de inicio de sesión funcione y luego simplemente lo reemplazaría
$redirect_to = ‘http://wpsnipp.com’; return $redirect_to;
con
$location = $_SERVER[‘HTTP_REFERER’]; wp_safe_redirect($location); exit();
¿Cuál es el uso de $redirect_to después del reemplazo? El código no me funciona 🙁
Hola Aayush, esto debería funcionar sin problemas. Cuando un usuario inicia sesión en WooCommerce, será redirigido en este caso a wpsnipp.com. Coloca esto dentro del archivo functions.php de tu tema de WordPress, asegúrate también de tener WooCommerce instalado, de lo contrario, esto no funcionará.
add_filter(‘woocommerce_login_redirect’, ‘wps_login_redirect’); function wps_login_redirect( $redirect_to ) { $redirect_to = ‘http://wpsnipp.com’; return $redirect_to; }
Hola Kevin,
probé este código y funciona:
add_filter(‘woocommerce_login_redirect’, ‘wps_login_redirect’); function wps_login_redirect( $redirect_to ) { $redirect_to = ‘http://wpsnipp.com’; return $redirect_to; }
Pero este no funcionó:
add_filter(‘woocommerce_login_redirect’, ‘wps_login_redirect’);
function wps_login_redirect( $redirect_to ) {
$location = $_SERVER[‘HTTP_REFERER’];
wp_safe_redirect($location);
exit();
}
Te agradecería si pudieras ayudarme,
Saludos
Supongo que HTTP_REFERER está vacío.
http://php.net/manual/en/reserved.variables.server.php
La dirección de la página (si la hay) que refirió al user agent a la página actual. Esto es establecido por el user agent. No todos los user agents establecerán esto, y algunos proporcionan la capacidad de modificar HTTP_REFERER como una característica.
Gracias. Me funcionó
¿Alguien ha tenido éxito con este código integrado en algún sitio web de S2Member? La forma en que el plugin S2Member maneja la redirección post-inicio de sesión puede estar anulando el código sugerido.
Para estar seguros, además de crear un plugin de funcionalidad, he actualizado el archivo functions.php en mi tema principal, así como el functions.php dentro del tema hijo que mi sitio realmente usa. Me aseguré de que la variable post ID se actualizara para la que usa la página de inicio de sesión de Wordpress ("user_login"), en lugar de "login_location".
Espero saber de alguna experiencia con redireccionamientos exitosos en sitios que tienen el plugin S2Member instalado y activado.
Saludos,
Darren
Hola Darren,
s2 tiene algunas funciones integradas para la redirección de inicio de sesión, por ejemplo:
add_filter(“ws_plugin__s2member_login_redirect”, “s2_redirect”, 10, 2);
function s2_redirect($redirect, $vars = array()){
// bla bla bla código……
return $redirect;
}
No he probado esto, pero algo en esta línea podría funcionarte.
if ( (isset($_GET[‘action’]) && $_GET[‘action’] != ‘logout’) || (isset($_POST[‘login_location’]) && !empty($_POST[‘login_location’])) ) { add_filter(“ws_plugin__s2member_login_redirect”, “s2_redirect”, 10, 2); function s2_redirect($redirect, $vars = array()){ $redirect = $_SERVER[‘HTTP_REFERER’]; return $redirect; } }
Esto no me funciona. ¿Incompatible con 3.8.1?
Esto no me funciona. ¿Incompatible con 3.8.1?
Esto no me funciona. ¿Incompatible con 3.8.1?
¿No sería lógicamente más correcto simplemente usar
add_filter(‘login_redirect’, ‘my_login_redirect’, 10, 3);
¿Y luego mover la declaración if a la propia función?
¿En qué página pondría esto? ¿Estamos hablando de una página con un enlace a la página de inicio de sesión, la página de inicio de sesión y la página redirigida?
Coloca esto en el functions.php y los redirigirá a la página que estaban viendo después de iniciar sesión.
¡GENIAL! Incluso mejor de lo que pensaba que podría ser…
Genial. Gracias.
Genial, me alegra que te guste el fragmento.
¡Bien!
Sí, estoy de acuerdo, Justin. – Tyler escribió esto después de necesitarlo para el trabajo, estoy seguro de que usaré este para un proyecto pronto.