¿Cómo redirigir usuarios no registrados a una página específica?

11

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 codificar usando la función! Is_user_logged_in () pero no sé cómo codificarla porque soy un novato en WordPress. Cuidado de decirme el archivo para poner el código también.

    
pregunta user3187719 30.01.2014 - 21:23

4 respuestas

24

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 del tema de su hijo, cambie el ID de la página o la barra y la URL de redireccionamiento.

También puedes usar código como este:

add_action( 'template_redirect', 'redirect_to_specific_page' );

function redirect_to_specific_page() {

if ( is_page('slug') && ! is_user_logged_in() ) {

wp_redirect( 'http://www.example.dev/your-page/', 301 ); 
  exit;
    }
}

Puede agregar el mensaje directamente a la página o si desea mostrar el mensaje para todos los usuarios que no han iniciado sesión, agréguelo al código .

enlace

    
respondido por el Brad Dalton 31.01.2014 - 09:03
4

¿Cómo podemos decirle dónde colocarlo si no nos dijo qué y dónde quiere mostrarlo? Todos los mensajes? Páginas? ¿Partes personalizadas de las páginas? Lo siento ... Supongo que mi bola de cristal no funciona bien hoy.

Ya que lo eres, y te cito: "un novato en wordpress" deberías aprender más que pedir una respuesta directa.

En cuanto a donde debe leer el enlace de referencia 1. Esto le dirá en qué archivo necesita ponerlo.

En cuanto a cómo hacerlo, primero debes leer los enlaces de referencia 2 y 3.

En general, debería verse algo como esto:

if ( is_user_logged_in() ) {
    the_content();
} else {
    echo 'For members only';
}

Por supuesto, el código anterior debe ir a un bucle . Puedes construirlo tan complejo o tan simple como quieras. Por ejemplo, en lugar de texto simple, si no ha iniciado sesión, puede mostrar el formulario de registro completo, por ejemplo o, como sugeriría, una pantalla dividida en la que el usuario puede iniciar sesión (ya que el usuario puede tener una cuenta pero se olvidó de iniciar sesión) o registrarse. (Si no tiene uno).

  1. Jerarquía de plantillas
  2. Etiquetas condicionales
  3. The Loop

Añadido después de los comentarios a continuación:

Para redirigir el uso de header con el wp_login_url - nuevamente, verifique las referencias 1 y 2 a continuación:

if ( is_user_logged_in() ) {
    the_content();
} else {
    header('Location: ' . wp_login_url());
}

Referencia:

  1. Header - PHP
  2. wp_login_url
respondido por el Borek 30.01.2014 - 22:57
4

No puede redireccionar a una página específica, pero cualquier usuario que no haya iniciado sesión será redirigido a la pantalla de inicio de sesión.

<?php auth_redirect(); ?>

Referencia de Wordpress: auth_redirect()

Solo para mencionar otra solución.

    
respondido por el MCG 13.12.2014 - 14:38
3

Esto sería mejor:

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 nuevamente a la página segura a la que intentaban acceder inicialmente.

Documentación aquí:

enlace

    
respondido por el Yahya Uddin 17.11.2017 - 17:00

Lea otras preguntas en las etiquetas