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

Hur man döljer lösenordskyddade posts från WordPress Loop

WordPress allow you to create password protected posts. En av våra läsare frågade nyligen om det var möjligt att dölja lösenordsskyddade post från sajten. Som standard döljer WordPress innehållet i ett lösenordsskyddat inlägg, men det visar fortfarande postens titel med prefixet ”Protected”. I den här artikeln visar vi dig hur du döljer lösenordsskyddade posts från WordPress-slingan.

Varför dölja password-skyddade posts i WordPress?

Som standard visar WordPress det lösenordsskyddade inlägg et med dess rubrik och ett ”protected”-prefix. Användare måste enter passwordet för att kunna viewa innehållet i posten.

Password protected posts displayed on homepage and in widgets

Rubriken för inlägget är synlig på homepage, archives, widget för senaste inlägg etc. Om du vill hålla en del content helt privat är detta ej en idealisk lösning.

Eller ej, användare som inte har password kan se rubriken på posten, de kan också försöka enter lösenord. Som vi alla vet kan lösenord knäckas.

Med det sagt, låt oss ta en titt på hur du döljer dina lösenordskyddade posts från WordPress loop så att andra användare inte kan se dem.

Dölja password-skyddade posts i WordPress

Lägg bara till den här koden i functions.php-filen i ditt theme eller i ett site-specifikt plugin.

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

Denna kod ändrar helt enkelt den sökning som skickas till WordPress genom att använda posts_where-filtret. Den ber WordPress att hämta alla posts som ej har ett password.

Besök din website och du kommer att se att password-skyddade posts inte längre är synliga på homepage, archives eller i widgets som gillar senaste inlägg.

Before and after hiding protected posts in WordPress

Du kan fortfarande besöka posten genom att komma åt den via en direkt URL till själva posten.

I exemplet ovan döljs password-skyddade posts från alla användare. Tänk om du run en multi-site WordPress och vill att skyddade poster ska kunna visas av användare med capability att edit privata posts?

Ändra helt enkelt koden ovan med en annan villkorsstyrd tagg, som den här:

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

I det här exemplet kontrollerar vi om en användare inte kan edit de lösenordsskyddade posterna, och visar sedan bara de posts som inte har lösenord. På så sätt kommer alla användare med användarrollerna administratör och editor att se de lösenordsskyddade posterna på front end av din site.

Vi hoppas att den här artikeln hjälpte dig att dölja lösenordsskyddade posts från WordPress loop på din site. Du kanske också vill se vår tutorial om hur du ändrar prefixet för privata och skyddade posts i WordPress.

Om du gillade den här artikeln, vänligen prenumerera på vår YouTube-kanal för WordPress video tutorials. Du kan också hitta oss på Twitter och Google+.

Avslöjande: Vårt innehåll stöds av våra läsare. Det innebär att om du klickar på några av våra länkar, kan vi tjäna en provision. Se hur WPBeginner finansieras, varför det är viktigt, och hur du kan stödja oss. Här är vår editoriala process.

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.

Den ultimata WordPress-verktygslådan

Få GRATIS tillgång till vår verktygslåda - en samling WordPress-relaterade produkter och resurser som varje professionell användare bör ha!

Reader Interactions

13 kommentarerLämna ett svar

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

      Administratör

  2. Rahul Rana

    This was very helpful. Thank you very much :)

    • WPBeginner Support

      You’re welcome glad our guide was helpful!

      Administratör

  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.

      Administratör

  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.

Lämna ett svar

Tack för att du väljer att lämna en kommentar. Tänk på att alla kommentarer modereras enligt våra policy för kommentarer, och din e-postadress kommer INTE att publiceras. Vänligen använd INTE nyckelord i namnfältet. Låt oss ha en personlig och meningsfull konversation.