Redirigir wp-login.php a otra página

7 ene 2014, 12:54:25
Vistas: 19.9K
Votos: 3

Me gustaría redirigir la página wp-login.php a la página /login. Así cuando un usuario hace clic en un enlace como este <a href="/wp-login.php">iniciar sesión</a>, WordPress lo redirigirá a /register.

Encontré esta función y la modifiqué:

add_action('init','custom_login');

function custom_login(){
 global $pagenow;
 if (( 'wp-login.php' == $pagenow ) && (!is_user_logged_in())) {
  wp_redirect('/login');
  exit();
 }

No soy muy bueno con la programación en WordPress.

La redirección funciona bien, pero la autenticación parece estar rota. Cuando ingreso mi usuario/contraseña, la misma página (/login) se recarga sin autenticarme.

¿Alguna sugerencia para arreglar la función de redirección?

1
Comentarios

lo que quieres es una página de inicio de sesión personalizada, puedes encontrar numerosos tutoriales sobre cómo hacerlo, y sobre cómo detener la redirección de la página de inicio de sesión personalizada a wp-login.php, el siguiente Enlace podría ayudarte.

Maruti Mohanty Maruti Mohanty
7 ene 2014 13:17:09
Todas las respuestas a la pregunta 4
0

Si solo te preocupan los enlaces de inicio de sesión mostrados en tus páginas, deberías poder modificar la URL enganchando el filtro login_url. Esto no redirigirá a un usuario que escriba http://MISITIO/wp-login.php directamente en su navegador, pero debería afectar a los enlaces de inicio de sesión mostrados en todo tu sitio.

Este es el código de ejemplo de la página del Codex de login_url:

add_filter( 'login_url', 'mi_pagina_de_login', 10, 2 );
function mi_pagina_de_login( $login_url, $redirect ) {
  return home_url( '/mi-pagina-de-login/?redirect_to=' . $redirect );
}
28 ene 2016 13:05:13
0

1. Modifica tu archivo .htaccess – agrega esta línea después de la regla de reescritura index.php:

RewriteRule ^index\.php$ – [L]<br />
RewriteRule ^rutasecreta$ wp-login.php [L,NC,QSA]

donde rutasecreta es la ruta hacia tu panel de administración.

2. Modifica la función login_header en el archivo wp-login.php – agrega este código justo antes de la línea 59 (donde comienza la etiqueta HTML doctype, para evitar errores de envío de cabeceras):

<?php $uri = $_SERVER['REQUEST_URI']; if(stripos($uri, ‘wp-login’) or stripos($uri, ‘wp-admin’) && !stripos($GLOBALS["HTTP_COOKIE"], ‘wordpress_logged_in’)) {  header("Location: ".get_site_url().'/rutasecreta' ); exit(); } ?>
7 ene 2014 15:39:58
0

En realidad ya tengo un plugin de código abierto que hace esto:

https://github.com/tripflex/wp-login-flow

Fue creado para requerir que los usuarios verifiquen sus correos electrónicos, pero puedes desactivar esa característica y solo usar la función de reescritura que está funcional en la última versión del repositorio de WordPress (1.0.0).

Puedes revisar el código para ver cómo manejo las reescrituras:

https://github.com/tripflex/wp-login-flow/blob/master/classes/rewrite.php#L312

Actualmente estoy trabajando en esto para hacer algunas actualizaciones y correcciones importantes, pero por ahora la versión 1.0.0 funciona perfectamente para las reescrituras. Disfrútalo :)

7 may 2015 02:50:59
0
-2

Si vas a crear una página de inicio de sesión personalizada en tu dirección /login, entonces crea una reescritura:

function restrict_admin() {

    if ( ! current_user_can( 'manage_options' ) && '/wp-admin/admin-ajax.php' != $_SERVER['PHP_SELF'] ) {
                wp_redirect( site_url() );
    }
}
add_action( 'admin_init', 'restrict_admin', 1 );

Este código verificará si el usuario es un administrador y, si no lo es, WordPress lo redirigirá de vuelta a la página de inicio del sitio web.

Crea también una plantilla lateral para tu inicio de sesión personalizado y utiliza los valores predeterminados de inicio de sesión de WordPress dentro de la plantilla:

$args = array( 'redirect' => site_url( $_SERVER['REQUEST_URI'] ) );
wp_login_form( $args );

También puedes cambiar la dirección de redirección para la página de inicio de sesión. Pero también es útil que verifiques los errores de inicio de sesión y quizás agregues código para la redirección correcta después de un inicio de sesión fallido. Para estos trabajos utiliza los hooks wp_login_failed y authenticate.

7 ene 2014 14:48:18