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

Jak ukryć wpisy zabezpieczone hasłem w pętli WordPressa?

WordPress umożliwia tworzenie wpisów zabezpieczonych hasłem. Niedawno jeden z naszych czytelników zapytał, czy możliwe jest ukrycie wpisów zabezpieczonych hasłem na witrynie. Domyślnie WordPress ukrywa treść wpisu zabezpieczonego hasłem, ale nadal wyświetla tytuł wpisu z prefiksem „Zabezpieczony”. W tym artykule pokażemy, jak ukryć wpisy zabezpieczone hasłem z pętli WordPress.

Dlaczego warto ukrywać wpisy zabezpieczone hasłem w WordPress?

Domyślnie WordPress wyświetla wpisy zabezpieczone hasłem z tytułem i prefiksem „zabezpieczony”. Użytkownicy będą musieli wpisz hasło, aby zobaczyć treść wpisu.

Password protected posts displayed on homepage and in widgets

Ten tytuł wpisu jest widoczny na stronie głównej, w archiwum, widżecie ostatnich wpisów itp. Jeśli chcesz, aby niektóre treści były całkowicie prywatne, nie jest to idealne rozwiązanie.

Nie tylko użytkownicy, którzy nie mają hasła, mogą zobaczyć tytuł wpisu, ale mogą również próbować wpisz hasła. Jak wszyscy wiemy, hasła można złamać.

Mając to na uwadze, przyjrzyjmy się, jak ukryć twoje wpisy zabezpieczone hasłem przed pętlą WordPress, aby inni użytkownicy nie mogli ich zobaczyć.

Ukrywanie wpisów zabezpieczonych hasłem w WordPressie

Wystarczy dodać ten kod do pliku functions. php twojego motywu lub wtyczki specyficznej dla witryny.

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

.

Ten kod po prostu modyfikuje zapytanie wysyłane do WordPressa za pomocą filtra posts_where. Prosi WordPressa o pobranie wszystkich wpisów, które nie mają hasła.

Przejdź na swoją witrynę internetową, a zobaczysz, że wpisy zabezpieczone hasłem nie są już widoczne na stronie głównej, w archiwach ani w widżetach, takich jak ostatnie posty.

Before and after hiding protected posts in WordPress

Nadal można przejść na wpis, uzyskując do niego bezpośredni adres URL.

Powyższy przykład ukrywa zabezpieczone hasłem wpisy przed wszystkimi użytkownikami. Co jeśli prowadziłeś witrynę WordPress z wieloma autorami i chciałeś, aby zabezpieczone wpisy były widoczne dla użytkowników z możliwością edycji prywatnych wpisów?

Wystarczy zmodyfikować powyższy kod za pomocą innego tagu warunkowego, takiego jak ten:

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

.

W tym przykładzie sprawdzamy, czy użytkownik nie może edytować wpisów zabezpieczonych hasłem, a następnie pokazujemy tylko wpisy, które nie mają hasła. W ten sposób wszyscy użytkownicy z rolami administratora i edytora zobaczą wpisy zabezpieczone hasłem na front-endzie twojej witryny.

Mamy nadzieję, że ten artykuł pomógł ci ukryć wpisy zabezpieczone hasłem przed pętlą WordPress na twojej witrynie. Możesz również zapoznać się z naszym poradnikiem na temat zmiany prefiksu prywatnych i zabezpieczonych wpisów w WordPress.

Jeśli podobał Ci się ten artykuł, zasubskrybuj nasz kanał YouTube, aby zobaczyć poradniki dotyczące filmów WordPress. Możesz nas również znaleźć na Twitterze i Google+.

Ujawnienie: Nasze treści są wspierane przez czytelników. Oznacza to, że jeśli klikniesz na niektóre z naszych linków, możemy otrzymać prowizję. Zobacz jak WPBeginner jest finansowany, dlaczego to ma znaczenie i jak możesz nas wspierać. Oto nasz proces redakcyjny.

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.

Najlepszy zestaw narzędzi WordPress

Uzyskaj BEZPŁATNY dostęp do naszego zestawu narzędzi - zbiór produktów i zasobów związanych z WordPressem, które każdy profesjonalista powinien mieć!

Reader Interactions

13 komentarzyZostaw odpowiedź

  1. David Brown

    Thank you for explaining how to *really* do it in code; I wasn’t expecting that from a site called „wpbeginner.com”! (Still works in 2024 and WP 6.5.2, by the way.)

    So many sites pretend to offer solutions but really want you to use their plug-in that overcomplicates some simple thing and leaves your site exposed to any vulnerabilities they might introduce and never patch.

    • WPBeginner Support

      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 :)

      Administrator

  2. Rahul Rana

    This was very helpful. Thank you very much :)

    • WPBeginner Support

      You’re welcome glad our guide was helpful!

      Administrator

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

      Administrator

  4. Louis Burkhardt

    Thanks. Works great.

  5. 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?

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

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

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

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

Zostaw odpowiedź

Dziękujemy za pozostawienie komentarza. Pamiętaj, że wszystkie komentarze są moderowane zgodnie z naszymi polityka komentarzy, a Twój adres e-mail NIE zostanie opublikowany. NIE używaj słów kluczowych w polu nazwy. Przeprowadźmy osobistą i konstruktywną rozmowę.