web-dev-qa-db-fra.com

Comment obtenir tous les messages sauf les messages privés?

Je crée une vue en mosaïque frontale où je dois afficher les messages les plus récents. J'ai donc besoin de montrer tous les articles publiés à chaque visiteur, mais de garder les articles privés pour les utilisateurs connectés.

Je sais comment ajouter les messages privés, mais je ne trouve pas le moyen de les supprimer de la requête.

(Les supprimer des résultats fonctionnerait, mais le nombre de publications sur la page varie en fonction du nombre de publications récentes privées: ce n'est pas ce que je veux!)

(Pour contourner le problème, je peux m'abstenir de publier les messages privés et d'afficher les messages privés en plus des articles publiés pour les membres ...)

Une idée?

1
a.l.e

Je crois que get_posts renvoie toutes les publications (publications non privées), mais affiche les publications protégées par mot de passe. En fait, par défaut, la boucle WP_Query standard le fait également. Donc, par défaut, les publications privées ne devraient pas apparaître.

Si vous souhaitez afficher des publications privées pour ceux qui sont connectés, et non pour ceux qui sont déconnectés, vous pouvez utiliser le paramètre d'autorisations perm=>'readable'.

$wp_query = new WP_Query( array( 'perm'=>'readable' ) );

Cela renvoie toutes les publications que l'utilisateur actuel est autorisé à lire. S'ils sont déconnectés, ils ne sont autorisés à lire que des publications publiées et non privées. Seuls ceux qui sont connectés, avec la possibilité de lire des messages privés, verront les messages privés.

Remarque

Les messages protégés par mot de passe apparaîtront toujours, mais nécessiteront évidemment un mot de passe pour les lire.

1
Stephen Harris