¿Cómo redirigir a los usuarios que no han iniciado sesión a una página específica?
16
Cómo redirigir a los usuarios no registrados que solicitan una página / URL específica a otra página / URL y mostrar un mensaje como "solo para miembros". Sé que es bastante fácil de codificar usando la función! Is_user_logged_in () pero no sé cómo codificarlo porque soy un novato en WordPress. Cuidado de decirme el archivo para poner el código también.
Aquí hay 2 ejemplos que deberá modificar ligeramente para que funcione según sus necesidades específicas.
add_action('admin_init','redirect_non_logged_users_to_specific_page');function redirect_non_logged_users_to_specific_page(){if(!is_user_logged_in()&& is_page('add page slug or ID here')&& $_SERVER['PHP_SELF']!='/wp-admin/admin-ajax.php'){
wp_redirect('http://www.example.dev/page/');exit;}}
Ponga esto en el archivo de funciones de su tema secundario, cambie la ID de la página o la barra y la URL de redireccionamiento.
Gracias por su respuesta. Me gustó esto, add_action('template_redirect', 'redirect_to_specific_page'); function redirect_to_specific_page() { if ( is_page('http://mydomain.com/participate') && !is_user_logged_in()) { wp_redirect('http://mydomain.com/login', 301); exit; } }pero no funciona
if(!is_user_logged_in()){
auth_redirect();}// continue as normal for authenticated users
Lo que esto hace es redirigir al usuario a la página de inicio de sesión. Una vez que ha iniciado sesión, el usuario es redirigido a la página segura a la que intentaban acceder inicialmente.
¿Cómo podemos decirle dónde colocarlo si no nos dijo qué y dónde desea mostrarlo? Publicaciones completas? Páginas? ¿Partes personalizadas de páginas? Lo siento ... supongo que mi bola de cristal no está funcionando bien hoy.
Como eres, y te cito: "un novato en wordpress", deberías aprender, en lugar de pedir una respuesta directa.
En cuanto a dónde debe leer el enlace de referencia 1. Esto le dirá en qué archivo necesita colocarlo.
En cuanto a cómo hacerlo, primero debe leer el enlace de referencia 2 y 3.
En general, debería verse así:
if( is_user_logged_in()){
the_content();}else{
echo 'For members only';}
Por supuesto, el código anterior debe entrar en un bucle . Puedes construirlo tan complejo o tan simple como quieras. Por ejemplo, en lugar de texto simple si no está conectado, puede mostrar un formulario de registro completo, por ejemplo, o, como sugeriría, una pantalla dividida donde el usuario puede iniciar sesión (ya que el usuario puede tener una cuenta pero olvidó iniciar sesión) o registrarse (si no tiene uno)
En realidad, no sé la función en WordPress que devuelve la URL solicitada o el enlace permanente. Y sobre el mensaje de pantalla, déjelo, solo quiero redirigirlos cuando soliciten cierta URL sin haber iniciado sesión.
user3187719
¿Puedo hacerlo con $ pagenow?
user3187719
@ user3187719 editó mi respuesta original y agregó la solución para redirigir. PD. $pagenow? Estás tratando de matar una mosca con un cañón seguro de que funcionará, pero ¿por qué tan complejo? Mantenlo simple. PS2: Aprende PHP y WP Codex.
Borek
4
No puede redirigir a una página específica, pero todos los usuarios que no hayan iniciado sesión serán redirigidos a la pantalla de inicio de sesión.
add_action('template_redirect', 'redirect_to_specific_page'); function redirect_to_specific_page() { if ( is_page('http://mydomain.com/participate') && !is_user_logged_in()) { wp_redirect('http://mydomain.com/login', 301); exit; } }
pero no funcionaEsto sería mejor:
Lo que esto hace es redirigir al usuario a la página de inicio de sesión. Una vez que ha iniciado sesión, el usuario es redirigido a la página segura a la que intentaban acceder inicialmente.
Documentación aquí:
https://codex.wordpress.org/Function_Reference/auth_redirect
fuente
¿Cómo podemos decirle dónde colocarlo si no nos dijo qué y dónde desea mostrarlo? Publicaciones completas? Páginas? ¿Partes personalizadas de páginas? Lo siento ... supongo que mi bola de cristal no está funcionando bien hoy.
Como eres, y te cito: "un novato en wordpress", deberías aprender, en lugar de pedir una respuesta directa.
En cuanto a dónde debe leer el enlace de referencia 1. Esto le dirá en qué archivo necesita colocarlo.
En cuanto a cómo hacerlo, primero debe leer el enlace de referencia 2 y 3.
En general, debería verse así:
Por supuesto, el código anterior debe entrar en un bucle . Puedes construirlo tan complejo o tan simple como quieras. Por ejemplo, en lugar de texto simple si no está conectado, puede mostrar un formulario de registro completo, por ejemplo, o, como sugeriría, una pantalla dividida donde el usuario puede iniciar sesión (ya que el usuario puede tener una cuenta pero olvidó iniciar sesión) o registrarse (si no tiene uno)
Agregado después de los comentarios a continuación:
Para redirigir el uso
header
conwp_login_url
- nuevamente, verifique las referencias 1 y 2 a continuación:Referencia:
fuente
$pagenow
? Estás tratando de matar una mosca con un cañón seguro de que funcionará, pero ¿por qué tan complejo? Mantenlo simple. PS2: Aprende PHP y WP Codex.No puede redirigir a una página específica, pero todos los usuarios que no hayan iniciado sesión serán redirigidos a la pantalla de inicio de sesión.
Referencia de Wordpress:
auth_redirect()
Solo por mencionar otra solución.
fuente