Como Ocultar Posts Protegidos por Senha do Loop do WordPress

Posts protegidos por senha devem permanecer ocultos, mas o WordPress ainda exibe seus títulos em listas de blogs, arquivos e resultados de pesquisa. Quando alguém clica em um e de repente se depara com uma tela de senha, isso pode ser confuso.

Isso não deixa a melhor impressão, especialmente se o conteúdo for apenas para clientes, membros ou uso interno. 😓

A boa notícia é que você pode ocultar completamente essas postagens do loop do WordPress (a lista de postagens exibidas na sua página inicial, arquivos e resultados de pesquisa). Em nossos testes, o WPCode se mostrou a maneira mais simples e confiável de fazer isso.

Neste guia, mostraremos algumas maneiras fáceis de manter seu conteúdo privado verdadeiramente privado. Testamos diferentes métodos para que você possa remover postagens protegidas por senha sem quebrar seu site ou bloquear o acesso para as pessoas que realmente precisam dele.

Como Ocultar Posts Protegidos por Senha do Loop do WordPress

Por que Ocultar Postagens Protegidas por Senha no WordPress?

O WordPress ainda exibe postagens protegidas por senha em todo o seu site com um rótulo "Protegido", mesmo que o conteúdo em si esteja bloqueado. Este é um problema se você quiser que determinado conteúdo permaneça totalmente privado.

Qualquer pessoa sem a senha ainda pode ver o título, o que pode revelar mais do que você pretende. Também pode confundir os visitantes que clicam em uma postagem esperando conteúdo, apenas para ver um prompt de senha.

Postagens protegidas por senha exibidas na página inicial

Além disso, essas postagens podem atrair atenção indesejada. Como os títulos são visíveis, alguém pode tentar repetidamente senhas diferentes para obter acesso – especialmente se o conteúdo parecer valioso ou sensível.

É por isso que muitos proprietários de sites optam por ocultar completamente as postagens protegidas por senha do loop do WordPress. Ao fazer isso, as postagens privadas não aparecerão em nenhum lugar no front-end, a menos que alguém já tenha acesso.

Com isso em mente, mostraremos como ocultar suas postagens protegidas por senha do loop do WordPress para que outros usuários não possam vê-las. Aqui está uma visão geral rápida de todas as etapas que você seguirá:

Vamos começar!

Etapa 1. Instale um Plugin de Snippet de Código

Para fazer alterações específicas em seu site, alguns especialistas em WordPress podem dizer para você adicionar um snippet de código personalizado ao arquivo functions.php do seu tema.

Não recomendamos este método porque ele não é muito amigável para iniciantes e você corre o risco de quebrar seu site. Em vez disso, você pode usar um plugin de trechos de código, como o WPCode, para fazer o trabalho.

O WPCode é o melhor plugin de snippet de código do mercado. Algumas de nossas marcas parceiras o utilizam para adicionar e gerenciar snippets de código personalizados em seus sites, e elas adoraram.

Você pode encontrar mais informações sobre o plugin em nossa análise completa do WPCode.

Página inicial do WPCode

🧑‍💻 Dica de Especialista: Este tutorial funciona perfeitamente com a versão gratuita do WPCode. Se você adiciona ou gerencia regularmente vários trechos de código personalizados, a atualização para o WPCode Pro oferece extras úteis como agendamento de código, histórico completo de revisões e muito mais.

Então, primeiro, prossiga e instale e ative o plugin WPCode.

No seu painel do WordPress, vá para Plugins » Adicionar Novo Plugin.

O submenu Adicionar Novo Plugin em Plugins na área de administração do WordPress

Na próxima tela, você pode usar a barra de pesquisa para procurar por WPCode.

Assim que ele aparecer nos resultados, clique no botão ‘Instalar Agora’ e depois em ‘Ativar’ para começar a usar o plugin no seu site.

Instalando WPCode

Se você é novo no WordPress, pode conferir nosso guia sobre como instalar um plugin WordPress.

Etapa 2. Oculte Postagens Protegidas por Senha no WordPress

Assim que ativar o plugin, navegue até Snippets de Código » + Adicionar Snippet na sua área de administração do WordPress.

Em seguida, basta clicar no botão ‘Adicionar Snippet Personalizado’ na seção ‘Adicionar Seu Código Personalizado (Novo Snippet)’.

Adicionando código personalizado no WPCode

Na próxima tela, você precisará escolher o tipo de código para o seu snippet personalizado.

Para este tutorial, precisaremos usar a opção ‘Snippet PHP’.

Escolhendo Trecho PHP como o tipo de código

Você será então redirecionado para o editor de snippets de código personalizado.

A partir daqui, você vai querer nomear o snippet personalizado primeiro. Recomendamos usar um nome claro, como 'Ocultar Posts Protegidos por Senha'. Isso facilitará a organização de seus snippets de código mais adiante.

Em seguida, simplesmente adicione o seguinte código à caixa ‘Pré-visualização do Código’:

function wpb_password_post_filter( $where = '' ) {
    if (!is_single() && !is_admin()) {
        $where .= " AND post_password = ''";
    }
    return $where;
}
add_filter( 'posts_where', 'wpb_password_post_filter' );

Este código instrui o WordPress a procurar por quaisquer posts que tenham uma senha e os exclui da consulta. Isso garante que eles não apareçam em listas como sua página inicial ou arquivos, mas eles ainda serão acessíveis por meio de links diretos.

Veja como fica no editor:

Prévia do código para ocultar posts protegidos por senha

Neste ponto, você precisará alternar o interruptor 'Inativo' para 'Ativo'.

Em seguida, clique em 'Salvar Snippet'.

Salvando trecho para ocultar postagens protegidas por senha

Por padrão, o WPCode aplicará automaticamente o snippet de código em todos os lugares do seu site WordPress.

Agora, se você visitar seu site, verá que os posts protegidos por senha não são mais visíveis na página inicial, nos arquivos ou em widgets como posts recentes.

Postagens protegidas ocultas

Lembre-se de que você ainda pode visitar o post acessando-o por meio de um URL direto.

Dica Bônus: Permitindo Acesso a Postagens Protegidas para Usuários Específicos

O exemplo acima oculta posts protegidos por senha de todos os usuários. Mas e se você gerencia um site WordPress de múltiplos autores e deseja que posts protegidos sejam visualizáveis por usuários com a capacidade de editar posts privados?

Para fazer isso, você precisa editar o trecho de código que criou na etapa anterior. Simplesmente exclua o código que você adicionou anteriormente e substitua-o por este novo trecho de código:

function wpb_password_post_filter( $where = '' ) {
   if (!is_single() && !current_user_can('edit_private_posts') && !is_admin()) {
        $where .= " AND post_password = ''";
    }
    return $where;
}
add_filter( 'posts_where', 'wpb_password_post_filter' );

Neste exemplo, verificamos se um usuário não pode editar posts privados e exibimos apenas os posts que não têm senhas.

Ao fazer isso, todos os usuários do WordPress com funções de administrador e editor verão as postagens protegidas por senha na parte frontal do seu site.

Perguntas Frequentes Sobre Ocultar Postagens Protegidas por Senha no WordPress

Perguntando o que acontece quando você oculta postagens protegidas por senha? Aqui estão algumas perguntas comuns que recebemos de leitores, juntamente com respostas claras para ajudá-lo a decidir se essa abordagem é adequada para o seu site.

Por que eu gostaria de ocultar postagens protegidas por senha no WordPress?

Ocultar postagens protegidas por senha ajuda a manter seu site com uma aparência limpa e profissional. Também impede que visitantes não autorizados vejam que o conteúdo privado existe, reduzindo o risco de tentativas de acesso e mantendo seu site mais seguro.

Preciso editar os arquivos do meu tema para ocultar posts protegidos por senha?

Não, você não precisa editar os arquivos do tema diretamente. Você pode usar um snippet de código personalizado, e um plugin como o WPCode torna seguro e fácil adicioná-lo sem quebrar seu site.

Ocultar essas postagens afetará a visibilidade para usuários autorizados?

De forma alguma. Usuários autorizados, como membros logados ou usuários com funções específicas, ainda podem acessar os posts diretamente, desde que tenham a senha ou permissões corretas.

O WPCode é o único plugin que pode ajudar com isso?

O WPCode é uma das opções mais fáceis e confiáveis, por isso o recomendamos. Dito isso, existem outros plugins disponíveis. Apenas certifique-se de escolher um que seja bem mantido e compatível com seu tema e outras ferramentas.

Ocultar postagens protegidas por senha afetará o SEO do meu site?

Ocultar essas postagens da sua página inicial ou arquivos não prejudicará seu SEO. Na verdade, pode melhorá-lo, mantendo seu conteúdo público mais focado e relevante para os motores de busca.

Outros Guias Úteis para Gerenciar um Site de Membros WordPress

Esperamos que este artigo tenha ajudado você a ocultar posts protegidos por senha do loop do WordPress em seu site.

Você também pode querer ver nossos tutoriais sobre:

Se você gostou deste artigo, por favor, inscreva-se em nosso Canal do YouTube para tutoriais em vídeo do WordPress. Você também pode nos encontrar no Twitter e no Facebook.

Aviso: Nosso conteúdo é apoiado pelos leitores. Isso significa que, se você clicar em alguns de nossos links, poderemos ganhar uma comissão. Veja como o WPBeginner é financiado, por que isso importa e como você pode nos apoiar. Aqui está nosso processo editorial.

O Kit de Ferramentas Definitivo para WordPress

Obtenha acesso GRATUITO ao nosso kit de ferramentas - uma coleção de produtos e recursos relacionados ao WordPress que todo profissional deve ter!

Interações do Leitor

17 CommentsLeave a Reply

  1. Isso funcionou muito bem para o feed principal; obrigado! Estou tendo um problema semelhante ao do Mark (alguns comentários acima), mas com o widget de Posts Recentes. Posts protegidos por senha ainda aparecem na lista de Posts Recentes.

        • Deveria ocultar os posts protegidos por senha do seu widget de posts recentes. Se você tem cache em seu site, certifique-se de limpá-lo caso esteja vendo informações em cache para o widget. A outra possibilidade é que algo esteja modificando a consulta que o widget está usando, além do nosso código.

  2. Obrigado por explicar como fazer isso *realmente* em código; eu não esperava isso de um site chamado “wpbeginner.com”! (Ainda funciona em 2024 e WP 6.5.2, a propósito.)

    Muitos sites fingem oferecer soluções, mas na verdade querem que você use o plugin deles, que complica demais algo simples e deixa seu site exposto a quaisquer vulnerabilidades que eles possam introduzir e nunca corrigir.

    • It would depend on the site and plugin as plugins can be for simply adding the same code as code from an article without needing to know how to edit files which is why sites recommend them. Glad you found our site and guide helpful :)

      Admin

  3. Muito obrigado, pessoal. Isso realmente me ajudou. Agradeço. Por favor, continuem com mais posts desse tipo que não envolvam o uso de um plugin.

  4. Criei um plugin específico para o site e segui estes passos, e funcionou para ocultar meu post na página "Posts" do meu site. No entanto, o post ainda está visível em um widget de Posts Relacionados para cada post individual. (Muito semelhante à imagem que você tem acima, no entanto, meu post protegido por senha ainda está visível.)

    Há algo que eu possa fazer para corrigir isso?

  5. Eu queria fazer meu próprio ajuste de código para mostrar as postagens se você pudesse ler_private_posts.

    function remove_password_protected_posts( $where = "" ) { if (!is_single() && !current_user_can(‘read_private_posts’) && !is_admin() ) { $where .= " AND post_password = ""; } return $where; } add_filter( ‘posts_where’, ‘remove_password_protected_posts’ );

    Ótima postagem como sempre. Obrigado.

  6. Olá pessoal

    Eu fiz um plugin específico para o site com o seguinte código:

    Se eu tentar anexar uma galeria nextgen ao meu post, a galeria não carrega, assim que eu desabilito o plugin, a galeria nextgen volta ao normal.

    Atenciosamente

  7. Obrigado por este trecho. Muito útil!

    Em relação a ocultar essas postagens do feed rss, encontrei este trecho.

    function rss_filter_protected($query) { if ($query->is_feed) { add_filter('posts_where', 'rss_filter_password_where'); } return $query; } add_filter('pre_get_posts','rss_filter_protected');

Deixe uma resposta

Obrigado por escolher deixar um comentário. Por favor, tenha em mente que todos os comentários são moderados de acordo com nossa política de comentários, e seu endereço de e-mail NÃO será publicado. Por favor, NÃO use palavras-chave no campo do nome. Vamos ter uma conversa pessoal e significativa.