Przez lata kilku naszych czytelników pytało nas, czy możliwe jest ukrycie postów chronionych hasłem w witrynie. Z naszego doświadczenia wynika, że tak, jest to możliwe – WordPress umożliwia tworzenie postów chronionych hasłem w celu wzmocnienia prywatności.
Ma to jednak pewną wadę. Gdy posty te pojawią się w witrynie, tytuły będą miały prefiks „Chronione”. Może to rozpraszać uwagę i sprawiać, że strony wyglądają mniej schludnie. Ponadto, gdy odwiedzający widzą te tytuły postów, ale nie mogą uzyskać dostępu do treści, może to sprawić, że będą zaciekawieni lub poczują się pominięci.
Zarządzając witrynami WordPress przez ponad 16 lat, znaleźliśmy skuteczne sposoby na usunięcie postów chronionych hasłem z pętli WordPress. Korzystając z narzędzia takiego jak WPCode, możesz zachować czysty i usprawniony wygląd witryny bez narażania bezpieczeństwa.
W tym artykule przeprowadzimy Cię przez kroki ukrywania postów chronionych hasłem z pętli WordPress.
Dlaczego warto ukrywać posty chronione hasłem w WordPress?
Domyślnie WordPress wyświetla post chroniony hasłem z tytułem i prefiksem „chroniony”. Użytkownicy muszą wprowadzić hasło, aby wyświetlić treść posta.
Ten prefiks posta jest widoczny na stronie głównej, w archiwach, w widżetach ostatnich postów i w innych obszarach.
Jeśli chcesz, aby niektóre treści były całkowicie prywatne, nie jest to idealne rozwiązanie z kilku powodów.
Użytkownicy, którzy nie mają haseł, nadal mogą zobaczyć tytuł posta, co samo w sobie może stanowić problem. Mogą również próbować uzyskać dostęp do treści za pomocą ataku siłowego. Jak wszyscy wiemy, hasła można złamać.
Mając to na uwadze, pokażemy ci, jak ukryć posty chronione hasłem w pętli WordPress, aby inni użytkownicy nie mogli ich zobaczyć. Oto krótkie spojrzenie na wszystkie kroki, które należy wykonać:
Przejdźmy od razu do rzeczy!
Krok 1. Zainstaluj wtyczkę fragmentu kodu
Aby wprowadzić określone zmiany w witrynie, niektórzy eksperci WordPress mogą zalecić dodanie niestandardowego fragmentu kodu do pliku functions.php motywu.
Nie zalecamy tej metody, ponieważ nie jest ona zbyt przyjazna dla początkujących i istnieje ryzyko zepsucia witryny. Zamiast tego można użyć wtyczki do fragmentów kodu, takiej jak WPCode.
WPCode to najlepsza wtyczka do fragmentów kodu na rynku. Aby uzyskać więcej informacji na temat wtyczki, zapraszamy do zapoznania się z naszą pełną recenzją WPCode.
Najlepsze jest to, że możesz użyć darmowej wersji WPCode, aby dodać niestandardowy fragment kodu do swojej witryny WordPress.
Najpierw zainstaluj i aktywuj darmową wtyczkę WPCode. Jeśli potrzebujesz pomocy w tym procesie, zapoznaj się z naszym przewodnikiem na temat instalacji wtyczki WordPress.
Porada eksperta: Odblokuj zaawansowane funkcje, takie jak pełna historia zmian, planowanie kodu i dostęp do ponad 100 zatwierdzonych przez ekspertów fragmentów kodu, kupując wersję premium WPCode.
Krok 2. Ukryj posty chronione hasłem w WordPress
Po aktywowaniu wtyczki, przejdź do fragmentu kodu ” + Dodaj fragment z obszaru administracyjnego WordPress.
Następnie wystarczy kliknąć przycisk „Dodaj niestandardowy fragment kodu” w sekcji „Dodaj swój niestandardowy kod (nowy fragment kodu)”.
Na następnym ekranie należy wybrać typ kodu dla niestandardowego fragmentu kodu.
W tym poradniku będziemy musieli użyć opcji „Fragment kodu PHP”.
Nastąpi przekierowanie do edytora niestandardowych fragmentów kodu.
W tym miejscu należy najpierw nadać nazwę niestandardowemu fragmentowi kodu. Zalecamy użycie jasnej nazwy, takiej jak „Ukryj posty chronione hasłem”. Ułatwi to organizowanie niestandardowych fragmentów kodu w przyszłości.
Następnie wystarczy dodać następujący kod do pola „Podgląd kodu”:
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 modyfikuje zapytanie wysyłane do WordPressa za pomocą filtru posts_where
. Prosi WordPress o pobranie wszystkich postów, które nie mają hasła.
Oto jak to wygląda w edytorze:
W tym momencie musisz przełączyć przełącznik „Nieaktywny” na „Aktywny”.
Następnie kliknij przycisk „Zapisz fragment kodu”.
Domyślnie WPCode automatycznie zastosuje fragment kodu wszędzie w witrynie WordPress.
Teraz, jeśli odwiedzisz swoją witrynę, zobaczysz, że posty chronione hasłem nie są już widoczne na stronie głównej, w archiwach ani w widżetach, takich jak ostatnie posty.
Pamiętaj, że nadal możesz odwiedzić post, uzyskując do niego dostęp za pośrednictwem bezpośredniego adresu URL.
Dodatkowa wskazówka: Zezwalanie na dostęp do chronionych postów dla określonych użytkowników
Powyższy przykład ukrywa posty chronione hasłem przed wszystkimi użytkownikami. Ale co, jeśli prowadzisz witrynę WordPress z wieloma autorami i chcesz, aby chronione posty były widoczne dla użytkowników z możliwością edycji prywatnych postó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ć postów chronionych hasłem i wyświetlamy tylko te posty, które nie mają hasła.
W ten sposób wszyscy użytkownicy z rolami administratora i redaktora będą widzieć posty chronione hasłem na front-endzie witryny.
Czy jesteś zmęczony dostosowywaniem i zarządzaniem swoją witryną WordPress samodzielnie? Dobra wiadomość jest taka, że nie musisz!
Dzięki oferowanej przez WPBeginner usłudze utrzymania i wsparcia WordPress, nasz zespół ekspertów zadba o to, by Twoja witryna była aktualna, tworzył regularne kopie zapasowe, zapewniał całodobowe monitorowanie czasu pracy i nie tylko!
Zarezerwuj bezpłatną konsultację telefoniczną lub sprawdź wszystkie nasze profesjonalne usługi już dziś!
Mamy nadzieję, że ten artykuł pomógł ci ukryć posty chronione hasłem w pętli WordPress na twojej stronie. Możesz również zapoznać się z naszym poradnikiem na temat zmiany prefiksu prywatnych i chronionych postów w WordPress oraz naszym przewodnikiem na temat różnych sposobów ochrony treści w WordPress.
If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.
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
Rahul Rana
This was very helpful. Thank you very much
WPBeginner Support
You’re welcome glad our guide was helpful!
Administrator
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
Louis Burkhardt
Thanks. Works great.
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?
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.
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
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');
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.