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

Comment masquer les publications protégées par mot de passe dans la boucle de WordPress

WordPress vous permet de créer des publications protégées par un mot passe. Récemment, un de nos lecteurs nous a demandé s’il était possible de masquer les publications protégées par mot de passe sur le site. Par défaut, WordPress masque le contenu d’une publication protégée par mot de passe, mais il affiche toujours le titre de la publication avec le préfixe  » Protégé « . Dans cet article, nous allons vous afficher comment masquer les publications protégées par mot de passe dans la boucle de WordPress.

Pourquoi masquer les publications protégées par mot de passe dans WordPress ?

Par défaut, WordPress affiche la publication protégée par mot de passe avec son titre et le préfixe « protected ». Les utilisateurs/utilisatrices devront saisir le mot de passe pour voir le contenu de la publication.

Password protected posts displayed on homepage and in widgets

Ce titre de publication est visible sur la page d’accueil, dans les archives, dans le widget des articles récents, etc. Si vous souhaitez garder certains contenus totalement privés, ce n’est pas l’idéal.

Non seulement les utilisateurs/utilisatrices qui n’ont pas de mot de passe peuvent voir le titre de la publication, mais ils peuvent également essayer de saisir leur mot de passe. Comme nous le savons tous, les mots de passe peuvent être déchiffrés.

Ceci étant dit, voyons comment masquer vos publications protégées par mot de passe dans la boucle de WordPress afin que les autres utilisateurs/utilisatrices ne puissent pas les voir.

Masquer les publications protégées par mot de passe dans WordPress

Il suffit d’ajouter ce code au fichier functions.php de votre thème ou à une extension spécifique à votre 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' );

Ce code modifie simplement la requête envoyée à WordPress en utilisant le filtre posts_where. Il demande à WordPress de récupérer toutes les publications qui n’ont pas de mot de passe.

Visitez votre site et vous verrez que les publications protégées par un mot passe ne sont plus visibles sur la page d’accueil, dans les archives ou dans les widgets comme les publications récentes.

Before and after hiding protected posts in WordPress

Vous pouvez toujours consulter la publication en accédant à l’URL directe de la publication elle-même.

L’exemple ci-dessus masque les publications protégées par mot passe à tous les utilisateurs/utilisatrices. Que se passerait-il si vous gériez un site WordPress à auteurs/autrices multiples et que vous vouliez que les articles protégés soient visibles par les utilisateurs/utilisatrices ayant la permissions de modifier les publications privées ?

Il vous suffit de modifier le code ci-dessus en y ajoutant une autre balise conditionnelle, comme celle-ci :

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

Dans cet exemple, nous vérifions si un utilisateur ne peut pas modifier les publications protégées par un mot de passe, puis nous affichons uniquement les publications qui n’ont pas de mot de passe. Ainsi, tous les utilisateurs/administratrices et éditeurs/éditrices verront les publications protégées par mot de passe sur l’interface publique de votre site.

Nous espérons que cet article vous a aidé à masquer les publications protégées par mot de passe dans la boucle WordPress de votre site. Vous pouvez également consulter notre tutoriel sur la modification du préfixe des publications privées et protégées dans WordPress.

Si vous avez aimé cet article, veuillez vous abonner à notre chaîne YouTube pour obtenir des tutoriels vidéo sur WordPress. Vous pouvez également nous trouver sur Twitter et Google+.

Divulgation : Notre contenu est soutenu par les lecteurs. Cela signifie que si vous cliquez sur certains de nos liens, nous pouvons gagner une commission. Consultez comment WPBeginner est financé, pourquoi cela compte et comment vous pouvez nous soutenir. Voici notre processus éditorial.

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.

L'ultime WordPress Toolkit

Accédez GRATUITEMENT à notre boîte à outils - une collection de produits et de ressources liés à WordPress que tous les professionnels devraient avoir !

Reader Interactions

11 commentairesLaisser une réponse

  1. Rahul Rana

    This was very helpful. Thank you very much :)

    • WPBeginner Support

      You’re welcome glad our guide was helpful!

      Administrateur

  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.

      Administrateur

  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.

Laisser une réponse

Merci d'avoir choisi de laisser un commentaire. Veuillez garder à l'esprit que tous les commentaires sont modérés selon notre politique de commentaires, et votre adresse e-mail ne sera PAS publiée. Veuillez NE PAS utiliser de mots-clés dans le champ du nom. Ayons une conversation personnelle et significative.