Restringir páginas no WordPress para exigir um login

Screen Shot 2013 07 01 no 12.23.52 PM

login_lock.jpgEsta semana, estávamos finalizando a implementação de um tema customizado no site de um cliente e eles solicitaram que construíssemos algum tipo de interação onde algumas das páginas fossem restritas a assinantes cadastrados. No início, pensamos em implementar plug-ins de terceiros, mas a solução era bastante simples.

Primeiro, copiamos o modelo de página para um novo arquivo (qualquer nome é bom, apenas mantenha a extensão php). Na parte superior da página, certifique-se de comentar na página para que possa vê-la no editor de modelos por nome:


Em seguida, procure a linha no código da sua página que exibe o conteúdo. Deve ser assim:


Agora, você precisará envolver algum código em torno dessa linha:

Apenas assinante Lamentamos, o conteúdo que você está tentando acessar é restrito apenas a assinantes.

O código começa verificando a sessão para ver se o usuário está conectado ao seu site WordPress. Se eles estiverem logados, o conteúdo será exibido. Se eles não estiverem logados, a mensagem informa que você está tentando acessar conteúdo restrito.

Para utilizar a página, você precisará selecionar o Apenas assinantes modelo de página na seção avançada das opções de sua página (na barra lateral). Isso restringirá a página aos leitores que estão logados.

Se você quiser ficar realmente sofisticado, pode adicionar um método de login e logout à sua barra lateral:

">Sair /wp-login.php">Login do cliente

28 Comentários

  1. 1
  2. 2
  3. 3
    • 4

      Olá Partha,

      Isso seria muito simples - você poderia adicionar a mesma técnica ao cabeçalho da página e basicamente dizer ... se (sem ID de usuário E página diferente de nome da página) então o cabeçalho encaminha para a página de login.

      Doug

  4. 5

    ótima solução elegante! exatamente o que eu precisava, eu estava pensando seriamente em construir um sistema de login externo.
    isso é demais!

  5. 6
    • 7
      • 8

        Não é amigável, mas tudo bem ... Acho que algumas fotos do que eu deveria estar fazendo ajudariam. Caso contrário ... vou tentar as coisas até que funcionem!

        • 9

          copie page.php, renomeie page2.php e insira o código acima, salve o arquivo, carregue de volta para content / theme / qualquer que seja chamado, vá para postar ou altere o layout de página padrão para page2.php. Não há necessidade de criar um novo estilo / layout de página, basta copiar o que você usa e renomeá-lo. então fullwidth.php é fullwidth2.php simples assim.

      • 10

        Ok, então depois de MUITAS tentativas e assistindo outros tutoriais na internet ... descobri que FAZER um novo modelo de página é o meu problema. Eu crio um em um editor de texto e tento carregá-lo para ... onde? Eu nem sei para onde ir. Não consigo encontrar este local secreto para fazer o upload!

        • 11

          É verdade, LaRocque! Você precisa ter um programa de FTP e acesso à pasta de temas do seu site para poder carregar o arquivo lá. Atualmente, NÃO há como fazer isso pela tela administrativa. Uma exceção seria instalar um plugin de “Gerenciador de Arquivos” que permite criar novos arquivos. Mas tenha cuidado! 

  6. 12
  7. 13
  8. 14
  9. 15
    • 16

      Você pode definitivamente apenas verificar se um usuário está ou não conectado; no entanto, o método definido acima irá eventualmente permitir que você use níveis de permissão se desejar personalizar os níveis!

  10. 17
  11. 18
  12. 19

    OK, vou morder ... Como você modificaria isso para permitir a verificação de permissões?

    Digamos - ainda queremos permitir que qualquer pessoa crie seu próprio nome de usuário de “Assinante” e publique respostas.
    MAS - só concedemos acesso à página “Apenas assinantes” para os usuários especificados por um administrador?

  13. 20
  14. 21

    Douglas - Usei seu código - e na maior parte ele funciona muito bem! O problema que tenho é que o link Logout retorna para um site que não existe. Na verdade, tentei vários códigos wordpress de toda a web para fazer o código de logout funcionar. . . mas o usuário ainda permanece conectado e o retorno é //wp-login.php?redirect_to= Budap>log%20in%20%20%20%20%20%20%20%20%20%20%20%20%20 % 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20% 20

    Alguma ideia?

    • 22

      Parece que quando o código foi copiado do seu navegador, ele adicionou um monte de espaços HTML, Ryan. Copie o código para o Notepad ou Textpad e, em seguida, copie-o em seu modelo para se livrar dessas coisas.

  15. 23

    Ok, isso é exatamente o que eu preciso fazer, mas tenho uma pergunta. Se eles não forem assinantes, como posso fazer com que uma caixa de “login” ou “assinar” apareça para que eles possam acessar o conteúdo?

    obrigado

  16. 25

    Obrigado pelo código. vai deixar as pessoas com raiva de mim, mas eles devem fazer o login quando querem alguma coisa, não permitindo a todos o acesso gratuito para tornar os arquivos fáceis de encontrar.

  17. 26

    Parece que esse método está sujeito a sequestro de sessão. O cookie de login será adicionado enquanto estiver na área segura, mas como o wordpress serve como um cookie não seguro, ele ainda será exibido se o usuário navegar de volta para uma parte do site que não está criptografada.

  18. 28

O que você acha?

Este site usa o Akismet para reduzir o spam. Saiba como seus dados de comentário são processados.