Cómo crear una página de inicio de sesión personalizada para clientes en una página específica
Quiero crear un formulario de inicio de sesión para clientes en la página de inicio y que, al iniciar sesión, el cliente sea dirigido a una página específica. Si intenta acceder a esa página sin estar logueado, debe ser redirigido a la página de inicio.
He intentado usar Theme my login pero no obtuve la solución deseada. También probé crear mi propia área de widgets y proteger la página con contraseña. Encontré varios problemas:
- Cómo tomar la entrada del usuario y sanitizarla. Intenté usar los métodos de WordPress esc_attr, esc_js, esc_html [¿Es eso suficiente?]
- Redirigí la página a una protegida por contraseña, pero la contraseña no activó el login.
- Una vez que inicio sesión en la página protegida, no parece cerrar sesión incluso si limpio la caché o las cookies.
Básicamente, quiero encontrar la solución. Gracias.

Aquí hay un excelente artículo que explica una solución para lo que estás intentando hacer y que yo mismo he utilizado. http://justintadlock.com/archives/2012/10/16/how-i-run-a-membership-site
En tu caso, querrás personalizar la función th3_club_member_template
para que sea algo así:
add_filter( 'template_redirect', 'nifty_log_in_check', 99 );
function nifty_log_in_check( $template ) {
if ( is_page('clients_only' ) ) && !current_user_can( 'view_client_content' ) ) //cambia esto según tus necesidades
{
wp_redirect( home_url() );
exit();
}
}
Luego puedes usar Theme My Login para configurar el formulario de acceso.
Una vez que el usuario inicie sesión, puedes redirigirlo manualmente o usar un plugin como Peters Login Redirect.
Para redirigirlos manualmente puedes hacer algo así:
function nifty_login_redirect( $redirect_to, $request, $user ){
//¿hay un usuario que verificar?
global $user;
if( isset( $user->roles ) && is_array( $user->roles ) ) {
//verificar administradores
if( in_array( "administrator", $user->roles ) ) {
// redirigirlos al lugar por defecto
return $redirect_to;
} else {
return home_url().'/client-area'; //cambia esto
}
}
else {
return $redirect_to;
}
}
add_filter("login_redirect", "nifty_login_redirect", 10, 3);

Nuestra empresa utiliza WP-Client, que es un plugin que permite crear portales para clientes... puedes crear uno para cada cliente individual y controlar lo que ven cuando inician sesión.
Incluso puedes personalizar la página de inicio de sesión... ha sido bastante fácil de configurar y el soporte es muy bueno.
Aquí está el sitio web: http://wp-client.com
