¿Cómo redirigir a los usuarios que no han iniciado sesión a una página específica?
4 respuestas
- votos
-
- 2014-01-31
Aquí hay 2ejemplos que deberámodificar ligeramentepara quefuncionepara susnecesidadesespecí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; } }
Ponestoen el archivo defunciones detutema secundario,cambiael ID depágina o slug y la URL de redireccionamiento.
Tambiénpuede utilizar un código comoeste:
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 agregarelmensaje directamente a lapágina o,si deseamostrarelmensaje atodos los usuarios queno haniniciado sesión, agréguelo al código .
Here are 2 examples which you will need to modify slightly to get it working for your specific needs.
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; } }
Put this in your child theme functions file, change the page ID or slug and the redirect url.
You could also use code like this:
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; } }
You can add the message directly to the page or if you want to display the message for all non logged in users, add it to the code.
-
Graciaspor su respuesta,me gustóeste `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); salida; } } `PeronoestáfuncionandoThanks for you answer I did like this `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; } }` But its not working
- 0
- 2014-01-31
- user3187719
-
Utiliceel ID depágina o slug aquí,no la URL http://mydomain.com/participate http://codex.wordpress.org/Conditional_TagsUse the page i.d or slug here, not the url http://mydomain.com/participate http://codex.wordpress.org/Conditional_Tags
- 0
- 2014-01-31
- Brad Dalton
-
is_page ('participar')is_page('participate')
- 0
- 2014-01-31
- Brad Dalton
-
- 2017-11-17
Esto seríamejor:
if ( !is_user_logged_in() ) { auth_redirect(); } // continue as normal for authenticated users
Lo que hacees redirigir al usuario a lapágina deinicio de sesión.Una vez que hainiciado sesión,se redirige al usuario a lapágina segura a la queintentaba accederinicialmente.
Documentación aquí:
https://codex.wordpress.org/Function_Reference/auth_redirect
This would be better:
if ( !is_user_logged_in() ) { auth_redirect(); } // continue as normal for authenticated users
What this does is redirect the user to the login page. Once logged in, the user is redirected back to the secure page they were trying to access initially.
Documentation here:
https://codex.wordpress.org/Function_Reference/auth_redirect
-
- 2014-01-30
¿Cómopodemos decirte dóndeponerlo sinonos dijiste qué y dónde quieresmostrarlo? ¿Publicaciones completas? Páginas? ¿Partespersonalizadas de laspáginas? Lo siento ... supongo quemi bola de cristalnoestáfuncionandobien hoy.
Ya queeres,yte cito: "unnovatoen wordpress",deberíasmás aprender quepedir una respuesta directa.
En cuanto a dónde ,debe leerelenlace de referencia 1. Esto le diráen qué archivo debe colocarlo.
En cuanto a cómo hacerlo,primero debe leer losenlaces de referencia 2 y 3.
Engeneral,debería verse así:
if ( is_user_logged_in() ) { the_content(); } else { echo 'For members only'; }
Por supuesto,el código anterior debeentraren un bucle . Puede construirlotan complejo otan simple como desee. Porejemplo,en lugar detexto simple sinoestá conectado,puedemostrarelformulario de registro completo,porejemplo o,como sugeriría,unapantalla dividida dondeel usuariopuedeiniciar sesión (ya queel usuariopuedetener una cuentapero olvidóiniciar sesión) o registrarse (sinotiene uno).
Agregado después de los comentarios a continuación:
Para redirigir use
header
conwp_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:
How can we tell you where to put it if you didn't tell us what and where you want to display it? Whole posts? Pages? Custom parts of pages? Sorry... I guess my crystal ball isn't quite working today.
Since you are, and I quote you: "a newbie to wordpress" you should rather learn, than to ask for direct answer.
As for where you should read the reference 1 link. This will tell you which file you need to put it in.
As for how to do it you should first read reference link 2 and 3.
Overall it should look something like this:
if ( is_user_logged_in() ) { the_content(); } else { echo 'For members only'; }
Of course the above code needs to go into a loop. You can build it up as complex or as simple as you want. For example instead of simple text if not logged in you can display whole sign up form for example or - as I would suggest - a divided screen where user can log in (since user can have an account but forgot to sign in) or sign up (if he doesn't have one).
Added after comments below:
To redirect use
header
with thewp_login_url
- again, check references 1 and 2 below:if ( is_user_logged_in() ) { the_content(); } else { header('Location: ' . wp_login_url()); }
Reference:
-
En realidad,no conozco lafunción de wordpress que devuelve la URL solicitada oelenlacepermanente.Y sobreelmensaje de lapantalla,déjelo,solo quiero redirigirlos cuando soliciten cierta URL sinestar registrados.Actually i don't know the funtction on wordpress that returns the requested URL or permalink. And about the dispaly message, leave it, I want to just want to redirect them when they request for certain URL without being logged.
- 0
- 2014-01-31
- user3187719
-
¿Puedo hacerlo con $pagenow?can I do it with $pagenow?
- 0
- 2014-01-31
- user3187719
-
@ user3187719editómi respuesta original y agregó la soluciónpara redirigir.PD.`$pagenow`?Estástratando dematar unamosca con un cañón,seguro quefuncionará,pero ¿por quéestan complejo?Mantenlo simple.PS2: aprende PHP y WP Codex.@user3187719 edited my original answer and added the solution to redirect. PS. `$pagenow`? You are trying to kill a fly with a cannon sure it will work, but why so complex? Keep it simple. PS2: Learn PHP and WP Codex.
- 0
- 2014-01-31
- Borek
-
- 2014-12-13
Nopuede redirigir a unapáginaespecífica,perotodos los usuarios queno hayaniniciado sesión serán redirigidos a lapantalla deinicio de sesión.
<?php auth_redirect(); ?>
Referencia de Wordpress:
auth_redirect()
Solopormencionar otra solución.
You can't redirect to a specific page, but every non-logged-in user will be redirected to Log-In Screen.
<?php auth_redirect(); ?>
Wordpress Reference:
auth_redirect()
Just to mention another solution.
Cómo redirigir a los usuariosno registrados que solicitan unapágina/URLespecífica a otrapágina/URL ymostrar unmensaje como "soloparamiembros".Sé queesbastantefácil de codificar usando lafunción! Is_user_logged_in ()perono sé cómo codificarloporque soy unnovatoen WordPress.Tenga cuidado de decirmeel archivoparaponerel códigotambién.