Como redirecionar usuários não logados para uma página específica?

11

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 de 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.

    
por user3187719 30.01.2014 / 21:23

4 respostas

24

Aqui estão 2 exemplos que você precisará modificar um pouco para que ele funcione 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 o espaçador e o URL de redirecionamento.

Você também pode usar um 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;
    }
}

Você pode adicionar a mensagem diretamente à página ou se quiser exibir a mensagem para todos os usuários não conectados, adicione-a ao código .

enlace

    
por Brad Dalton 31.01.2014 / 09:03
4

Como podemos dizer-lhe onde colocá-lo se você não nos disse o que e onde você deseja exibi-lo? Mensagens inteiras? Páginas? Peças personalizadas de páginas? Desculpe ... Eu acho que minha bola de cristal não está funcionando hoje.

Desde que você é, e eu cito você: "um novato para wordpress" você deve preferir aprender, do que pedir resposta direta.

Quanto a onde você deve ler o link de referência 1. Isso lhe dirá qual arquivo você precisa colocar.

Quanto a como , você deve primeiro ler os links de referência 2 e 3.

No geral, deve ser algo assim:

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

É claro que o código acima precisa entrar em um loop . Você pode construir o mais complexo ou simples que você quiser. Por exemplo, em vez de texto simples, se não estiver logado, você pode exibir todo o formulário de inscrição, por exemplo ou - como eu sugeriria - uma tela dividida onde o usuário pode fazer login (porque o usuário pode ter uma conta, mas esqueceu de entrar) (se ele não tiver um).

  1. Hierarquia de modelos
  2. Tags condicionais
  3. O Loop

Adicionado após os comentários abaixo:

Para redirecionar use header com o wp_login_url - novamente, verifique as referências 1 e 2 abaixo:

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

Referência:

  1. Cabeçalho - PHP
  2. wp_login_url
por Borek 30.01.2014 / 22:57
4

Você não pode redirecionar para uma página específica, mas todos os usuários que não fizeram login serão redirecionados para a tela de login.

<?php auth_redirect(); ?>

Referência do Wordpress: auth_redirect()

Apenas para mencionar outra solução.

    
por MCG 13.12.2014 / 14:38
3

Isso seria melhor:

if ( !is_user_logged_in() ) {
    auth_redirect();
} 

// continue as normal for authenticated users

O que isto faz é redirecionar o usuário para a página de login. Uma vez logado, o usuário é redirecionado de volta para a página segura que eles estavam tentando acessar inicialmente.

Documentação aqui:

enlace

    
por Yahya Uddin 17.11.2017 / 17:00

Tags