Como redirecionar usuários não logados para uma página específica?
16
Como redirecionar usuários não registrados que solicitam uma página / URL específica para outra página / URL e exibir uma mensagem como "somente para membros". Eu sei que é muito fácil codificar usando a função! Is_user_logged_in (), mas eu não sei como codificá-lo porque eu sou um novato no WordPress. Cuidado para me dizer o arquivo para colocar o código também.
Aqui estão dois exemplos que você precisará modificar um pouco para funcioná-lo para suas necessidades 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;}}
Coloque isso no arquivo de funções do tema filho, altere o ID da página ou slug e o URL de redirecionamento.
Obrigado pela resposta, eu fiz assim. 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; } }Mas não está funcionando.
if(!is_user_logged_in()){
auth_redirect();}// continue as normal for authenticated users
O que isso faz é redirecionar o usuário para a página de login. Uma vez logado, o usuário é redirecionado de volta à página segura que estava tentando acessar inicialmente.
Como podemos dizer onde colocá-lo se você não nos disse o que e onde deseja exibi-lo? Mensagens inteiras? Páginas? Partes personalizadas de páginas? Desculpe ... Acho que minha bola de cristal não está funcionando hoje.
Como você é, e cito: "um novato no wordpress", você deveria aprender mais do que pedir uma resposta direta.
Quanto a onde você deve ler o link de referência 1. Isso informará em qual arquivo você deve inseri-lo.
Quanto a como fazer isso, você deve primeiro ler os links de referência 2 e 3.
No geral, deve ser algo como isto:
if( is_user_logged_in()){
the_content();}else{
echo 'For members only';}
Obviamente, o código acima precisa entrar em loop . Você pode construí-lo da maneira mais complexa ou simples que desejar. Por exemplo, em vez de texto simples, se não estiver logado, é possível exibir todo o formulário de inscrição, por exemplo, ou - como eu sugeriria - uma tela dividida em que o usuário pode efetuar login (já que o usuário pode ter uma conta, mas esqueceu de entrar) ou se inscrever (se ele não tiver um).
Na verdade eu não sei a função no wordpress que retorna a URL solicitada ou o link permanente. E sobre a mensagem de exibição, deixe-a, eu quero apenas redirecioná-las quando elas solicitarem um determinado URL sem serem registradas.
user3187719
posso fazer isso com $ pagenow?
precisa saber é o seguinte
@ user3187719 editou minha resposta original e adicionou a solução para redirecionar. PS. $pagenow? Você está tentando matar uma mosca com um canhão com certeza vai funcionar, mas por que tão complexo? Mantenha simples. PS2: Aprenda PHP e WP Codex.
Borek
4
Você não pode redirecionar para uma página específica, mas todos os usuários não conectados serão redirecionados para a tela de logon.
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; } }
Mas não está funcionando.Isso seria melhor:
O que isso faz é redirecionar o usuário para a página de login. Uma vez logado, o usuário é redirecionado de volta à página segura que estava tentando acessar inicialmente.
Documentação aqui:
https://codex.wordpress.org/Function_Reference/auth_redirect
fonte
Como podemos dizer onde colocá-lo se você não nos disse o que e onde deseja exibi-lo? Mensagens inteiras? Páginas? Partes personalizadas de páginas? Desculpe ... Acho que minha bola de cristal não está funcionando hoje.
Como você é, e cito: "um novato no wordpress", você deveria aprender mais do que pedir uma resposta direta.
Quanto a onde você deve ler o link de referência 1. Isso informará em qual arquivo você deve inseri-lo.
Quanto a como fazer isso, você deve primeiro ler os links de referência 2 e 3.
No geral, deve ser algo como isto:
Obviamente, o código acima precisa entrar em loop . Você pode construí-lo da maneira mais complexa ou simples que desejar. Por exemplo, em vez de texto simples, se não estiver logado, é possível exibir todo o formulário de inscrição, por exemplo, ou - como eu sugeriria - uma tela dividida em que o usuário pode efetuar login (já que o usuário pode ter uma conta, mas esqueceu de entrar) ou se inscrever (se ele não tiver um).
Adicionado após os comentários abaixo:
Para redirecionar o uso
header
com owp_login_url
- novamente, verifique as referências 1 e 2 abaixo:Referência:
fonte
$pagenow
? Você está tentando matar uma mosca com um canhão com certeza vai funcionar, mas por que tão complexo? Mantenha simples. PS2: Aprenda PHP e WP Codex.Você não pode redirecionar para uma página específica, mas todos os usuários não conectados serão redirecionados para a tela de logon.
Referência do Wordpress:
auth_redirect()
Apenas para mencionar outra solução.
fonte