Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
Copa WPB
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

Como ocultar postagens protegidas por senha do loop do WordPress

O WordPress permite que você crie publicações protegidas por senha. Recentemente, um de nossos leitores perguntou se era possível ocultar as publicações protegidas por senha do site. Por padrão, o WordPress oculta o conteúdo de uma publicação protegida por senha, mas ainda mostra o título da publicação com o prefixo “Protected” (Protegido). Neste artigo, mostraremos como ocultar postagens protegidas por senha do loop do WordPress.

Por que ocultar postagens protegidas por senha no WordPress?

Por padrão, o WordPress exibe a postagem protegida por senha com seu título e um prefixo “protected”. Os usuários precisarão digitar a senha para visualizar o conteúdo da publicação.

Password protected posts displayed on homepage and in widgets

Esse título da postagem fica visível na página inicial, nos arquivos, no widget de postagens recentes etc. Se você quiser manter algum conteúdo totalmente privado, esse não é o ideal.

Não apenas os usuários que não têm senha podem ver o título da postagem, mas também podem tentar inserir senhas. Como todos sabemos, as senhas podem ser decifradas.

Dito isso, vamos dar uma olhada em como ocultar suas postagens protegidas por senha do loop do WordPress para que outros usuários não possam vê-las.

Como ocultar publicações protegidas por senha no WordPress

Basta adicionar esse código ao arquivo functions.php do seu tema ou a um plug-in específico do site.

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' );

Esse código simplesmente modifica a consulta enviada ao WordPress usando o filtro posts_where. Ele solicita ao WordPress que busque todos os posts que não tenham uma senha.

Visite seu site e você verá que as publicações protegidas por senha não estão mais visíveis na página inicial, nos arquivos ou em widgets como publicações recentes.

Before and after hiding protected posts in WordPress

Você ainda pode visitar a publicação acessando-a por meio de um URL direto para a própria publicação.

O exemplo acima oculta as publicações protegidas por senha de todos os usuários. E se você administrasse um site WordPress com vários autores e quisesse que os posts protegidos pudessem ser visualizados por usuários com capacidade de editar posts privados?

Basta modificar o código acima com outra tag condicional, como esta:

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 as postagens protegidas por senha e, em seguida, mostramos apenas as postagens que não têm senha. Dessa forma, todos os usuários com funções de administrador e editor verão as publicações protegidas por senha no front-end do seu site.

Esperamos que este artigo tenha ajudado a ocultar postagens protegidas por senha do loop do WordPress em seu site. Talvez você também queira ver nosso tutorial sobre como alterar o prefixo de publicações privadas e protegidas no WordPress.

Se você gostou deste artigo, inscreva-se em nosso canal do YouTube para receber tutoriais em vídeo sobre o WordPress. Você também pode nos encontrar no Twitter e no Google+.

Divulgação: Nosso conteúdo é apoiado pelo leitor. Isso significa que, se você clicar em alguns de nossos links, poderemos receber uma comissão. Veja como o WPBeginner é financiado, por que isso é importante e como você pode nos apoiar. Aqui está nosso processo editorial.

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

O kit de ferramentas definitivo WordPress

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

Reader Interactions

11 ComentáriosDeixe uma resposta

  1. Rahul Rana

    This was very helpful. Thank you very much :)

    • WPBeginner Support

      You’re welcome glad our guide was helpful!

      Administrador

  2. Vincent Zhang

    Thank you guys so much. This really helped me. I appreciate it. Please keep more of this type of posts coming that do not involve using a plugin.

    • WPBeginner Support

      When a plugin-free solution is available we will be sure to try to include it.

      Administrador

  3. Louis Burkhardt

    Thanks. Works great.

  4. Mark

    I created a site specific plugin and followed these steps and it worked for hiding my post on the “Posts” page of my site. However, the post is still visible on a Related Posts widget for each individual post. (Very similar to the image you have above, however my Password protected post is still visible.)

    Is there anything I can do to fix this?

  5. Alex

    I wanted to make my own code adjustment to show the posts if you could read_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’ );

    Great post as usual. Thanks.

  6. Harin

    Hi guys

    I made a site specific plugin with the following code:

    If I try to attach a nextgen gallery to my post, the gallery doesn’t load, as soon as I disable the plugin, the nextgen gallery goes back to normal.

    Regards

  7. Brandon

    Thanks for this snippet. So helpful!

    Regarding hiding these posts from the rss feed, I ran across this snippet.


    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');

  8. Chris

    Thanks for that great tip!
    But are these posts hidden from the loop with your code snippet also hidden from the RSS feed?

    • Louis Burkhardt

      Based on a single test, the pw protected post is hidden from the RSS feed.

Deixe uma resposta

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