WordPress şifre korumalı yazılar oluşturmanıza olanak tanır. Geçenlerde okuyucularımızdan biri parola korumalı yazıları siteden gizlemenin mümkün olup olmadığını sordu. Varsayılan olarak, WordPress parola korumalı bir yazının içeriğini gizler, ancak yazı başlığını ‘Korumalı’ ön ekiyle göstermeye devam eder. Bu makalede, parola korumalı yazıları WordPress döngüsünden nasıl gizleyeceğinizi göstereceğiz.
WordPress’te Parola Korumalı Yazıları Neden Gizleyelim?
Varsayılan olarak, WordPress parola korumalı gönderiyi başlığı ve ‘korumalı’ önekiyle görüntüler. Kullanıcıların yazının içeriğini görüntülemek için şifreyi girmeleri gerekecektir.
Bu gönderi başlığı ana sayfada, arşivlerde, son gönderiler widget’ında vb. görünür. Bazı içerikleri tamamen gizli tutmak istiyorsanız, bu ideal değildir.
Şifresi olmayan kullanıcılar yalnızca gönderi başlığını görmekle kalmaz, aynı zamanda şifre girmeyi de deneyebilirler. Hepimizin bildiği gibi, şifreler kırılabilir.
Bunu söyledikten sonra, parola korumalı gönderilerinizi WordPress döngüsünden nasıl gizleyeceğinize bir göz atalım, böylece diğer kullanıcılar bunları göremez.
WordPress’te Parola Korumalı Yazıları Gizleme
Bu kodu temanızın functions.php dosyasına veya siteye özel bir eklentiye eklemeniz yeterlidir.
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' );
Bu kod basitçe posts_where
filtresini kullanarak WordPress’e gönderilen sorguyu değiştirir. WordPress’ten parolası olmayan tüm gönderileri getirmesini ister.
Web sitenizi ziyaret ettiğinizde, parola korumalı gönderilerin artık ana sayfada, arşivlerde veya son gönderiler gibi widget’larda görünmediğini göreceksiniz.
Gönderinin kendisine doğrudan bir URL aracılığıyla erişerek gönderiyi ziyaret etmeye devam edebilirsiniz.
Yukarıdaki örnek, parola korumalı gönderileri tüm kullanıcılardan gizler. Peki ya çok yazarlı bir WordPress sitesi işletiyorsanız ve korumalı gönderilerin özel gönderileri düzenleme yeteneğine sahip kullanıcılar tarafından görüntülenebilmesini istiyorsanız?
Yukarıdaki kodu aşağıdaki gibi başka bir koşul etiketi ile değiştirmeniz yeterlidir:
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' );
Bu örnekte, bir kullanıcının parola korumalı gönderileri düzenleyemeyeceğini kontrol ediyoruz, ardından yalnızca parolası olmayan gönderileri gösteriyoruz. Böylece yönetici ve editör kullanıcı rollerine sahip tüm kullanıcılar sitenizin ön ucunda parola korumalı gönderileri görecektir.
Umarız bu makale sitenizdeki WordPress döngüsünden parola korumalı gönderileri gizlemenize yardımcı olmuştur. WordPress’te özel ve korumalı gönderilerin önekini değiştirme hakkındaki eğitimimizi de görmek isteyebilirsiniz.
Bu makaleyi beğendiyseniz, WordPress video eğitimleri için lütfen YouTube Kanalımıza abone olun. Bizi Twitter ve Google+‘da da bulabilirsiniz.
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
Yönetici
Rahul Rana
This was very helpful. Thank you very much
WPBeginner Support
You’re welcome glad our guide was helpful!
Yönetici
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.
Yönetici
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.