Como redirecionar usuários não registrados para uma página específica?
4 respostas
- votos
-
- 2014-01-31
Aquiestão doisexemplos que vocêprecisarámodificar ligeiramentepara obtê-lofuncionandopara suasnecessidadesespecí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; } }
Coloqueissono seu arquivo defunções detemafilho,altere o ID dapágina ou o SLUGe o URL de redirecionamento.
Vocêtambémpode usar o 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; } }
Vocêpode adicionar amensagem diretamente àpágina ou se desejaexibir amensagemparatodos os usuáriosnão logados, adicioná-lo ao 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.
-
Obrigadopor você responder Eugostei desse 'add_action ('modod_redirect ',' redirect_to_specific_page '); função redirect_to_specific_page () { if (is_page ('http://mydomain.com/Participate') &&!is_user_logged_in ()) { wp_redirect ('http://mydomain.com/login',301); saída; } } `Masnãoestá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
-
Use apágina I.D ou Slug aqui,não a 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 ('participe')is_page('participate')
- 0
- 2014-01-31
- Brad Dalton
-
- 2017-11-17
Isso seriamelhor:
if ( !is_user_logged_in() ) { auth_redirect(); } // continue as normal for authenticated users
O queisso é redirecionar o usuáriopara apágina de login.Uma vez logado,o usuário é redirecionado de voltapara apágina segura queelesestavamtentando acessarinicialmente.
Documentação aqui:
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
Comopodemos dizer onde colocá-lo se vocênãonos contou o quee onde você querexibi-lo? Postagensinteiras? Páginas? Partespersonalizadas daspáginas? Desculpe ...eu acho queminhabola de cristalnãoestáfuncionando hoje.
Desde que você é,e eu cito: "Umnovatopara o WordPress",você deve aprender,do quepedir resposta direta.
Quanto a onde você deve ler o link Referência 1. Isso dirá a você qual arquivo vocêprecisapara colocá-lo.
Quanto a Como parafazer,você deveprimeiro ler o link de referência 2e 3.
Nogeral,deveparecer algo assim:
if ( is_user_logged_in() ) { the_content(); } else { echo 'For members only'; }
É claro que o código acimaprecisaentrarem um loop . Vocêpode construí-lotão complexo outão simples quanto quiser. Porexemplo,em vez detexto simples,senãoestiver logado,vocêpodeexibir oformulário deinscriçãointeiroporexemplo ou - comoeu sugeriria - umatela divididaem que o usuáriopodefazer login (já que o usuáriopodeter uma conta,masesquecer-se defazer login) ou seinscrever (seelenãotiver um).
Adicionado após os comentários abaixo:
Para redirecionar o uso
header
com owp_login_url
-novamente,verifique referências 1e 2 abaixo:if ( is_user_logged_in() ) { the_content(); } else { header('Location: ' . wp_login_url()); }
Referência:
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:
-
Na verdade,não sei ofuntctionno WordPress que retorna o URL solicitado ou Permalink.E sobre amensagem disputada,deixe-a,quero apenas redirecioná-las quando solicitarem certos URL sem serem 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
-
Possofazerisso com $ Pagenow?can I do it with $pagenow?
- 0
- 2014-01-31
- user3187719
-
@ user3187719 Editouminha resposta originale adicionou a soluçãopara redirecionar.PS.`$pagenow`?Vocêestátentandomatar umamosca com um canhão certo que vaifuncionar,maspor quetão complexo?Mantenha simples.PS2: Aprenda PHPe 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
Vocênãopode redirecionarpara umapáginaespecífica,mastodo usuárionão logado será redirecionadopara atela de login.
<?php auth_redirect(); ?>
WordPress Referência:
auth_redirect()
apenasparamencionar outra solução.
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.
Como redirecionar usuáriosnão registrados solicitando umapágina/URLespecíficapara outrapágina/URLe exibir umamensagem como "Apenasparamembros".Eu sei que ébastantefácil de codificar usando! Is_user_logged_in () Função,maseunão sei como codificá-loporqueeu sou umnovatopara o WordPress.Cuidadoparame dizer o arquivopara colocar o códigotambém.