2009-12-29 36 views
17

Tengo un sitio web, con un sistema de usuario. Quiero integrar el sistema de usuario de wordpress en ese sitio web, pero aún quiero usar las páginas de registro/inicio de sesión del sitio web. No quiero que nadie pueda iniciar sesión o registrarse usando los formularios de inicio de sesión o registro de Wordpress. En cambio, cuando intentan acceder a las páginas de inicio de sesión/registro en Wordpress, quiero que esas páginas las redirijan a mis propias páginas de inicio de sesión/registro.Redirigir la página de inicio de sesión/registro de Wordpress a una página de inicio de sesión/registro personalizada

¿Hay alguna forma de hacerlo? Probé con Google, pero todo lo que pude encontrar fue una redirección DESPUÉS de que el usuario inicie sesión o se registre, que no es lo que quiero.

Gracias de antemano.

Respuesta

23

Para esto, necesita redirigir la página de inicio de sesión/registro a sus páginas personalizadas. Por lo tanto, escriba este código en su archivo functions.php En su carpeta de tema activado. Pase su ruta de página personalizada como argumento.

add_action('init','possibly_redirect'); 

function possibly_redirect(){ 
global $pagenow; 
if('wp-login.php' == $pagenow) { 
    wp_redirect('http://google.com/'); 
    exit(); 
} 
} 
+0

¿Dónde debo registrar la llamada add_action? ¿a dónde llamo esto? discúlpeme porque soy un desarrollador de .Net. –

+0

Tiene dos opciones. O bien, arroje el código anterior en un complemento o cree un functions.php en la carpeta de temas y agregue lo anterior. – nickohrn

+5

Se debe agregar que esto inhabilita la posibilidad de cerrar la sesión a menos que se haga explícitamente desde la página de destino. – thinice

1

Es posible que pueda engancharse al gancho login_head y emitir un redireccionamiento allí.

17

para restringir el acceso directo sólo para 'wp-login.php', sin solicitud POST o GET (útil para formularios personalizados ajax de inicio de sesión), utilizo la función avanzada:

function possibly_redirect(){ 
    global $pagenow; 
    if('wp-login.php' == $pagenow) { 
    if (isset($_POST['wp-submit']) || // in case of LOGIN 
     (isset($_GET['action']) && $_GET['action']=='logout') || // in case of LOGOUT 
     (isset($_GET['checkemail']) && $_GET['checkemail']=='confirm') || // in case of LOST PASSWORD 
     (isset($_GET['checkemail']) && $_GET['checkemail']=='registered')) return; // in case of REGISTER 
    else wp_redirect(home_url()); // or wp_redirect(home_url('/login')); 
    exit(); 
    } 
} 
add_action('init','possibly_redirect'); 
+0

Este funciona mejor para más escenarios, gracias. – Chozen

+0

La respuesta aceptada no funciona para aquellos de nosotros que usamos wp_login_form() - use esta en su lugar. – piersb

2

Si está haciendo uso de una página de inicio de sesión personalizada, pero aún usando wp_login_form(), tenga en cuenta que el formulario se enviará a wp-login.php, por lo que querrá verificar si $ _POST está vacío antes de redireccionar.

function prefix_wp_login_redirect() { 
    global $pagenow; 
    if($pagenow == 'wp-login.php' && empty($_POST)) { 
    auth_redirect(); 
    exit(); 
    } 
} 
1

El gancho de la acción correcta es login_init que sólo los incendios en wp-login.php.

En este caso, no se solicite ?action=action-name, por lo que es la página principal de entrada:

add_action('login_init', function(){ 
    if(!isset($_GET['action'])) { 
     wp_redirect('http://example.com'); 
    } 
}); 

Para todas las solicitudes, podemos utilizar un gancho específico login_form_ACTION-NAME, es decir, postpass, logout, lostpassword, retrievepassword, resetpass, register y login. Ejemplo:

add_action('login_form_register', function(){ 
    wp_redirect(site_url('custom-registration/')); 
}); 
Cuestiones relacionadas