2009-06-16 9 views
7

Sur une nouvelle installation de WordPress 2.8, j'ai des messages assignés à la catégorie Foo qui étaient auparavant publics mais qui ont depuis été rendus privés. Lorsque je suis connecté à WordPress (en tant qu'administrateur) et que je parcours la page de la catégorie Foo dans un autre onglet du même navigateur, je peux voir les messages privés sur la page de catégorie, avec les titres préfixés par le mot " PRIVATE: ".WordPress affiche les messages privés des utilisateurs connectés - comment désactiver cette fonctionnalité?

Maintenant, rien n'est "cassé" à ce sujet - les messages sont correctement cachés aux utilisateurs non connectés. Mais je ne veux pas que les utilisateurs connectés voient les messages privés sur le site en direct, parce que franchement c'est juste ennuyeux, pas utile.

Que dois-je faire à la WP Loop sur la page d'archives de catégories ou au fichier de fonctions pour désactiver cette possibilité indésirable de voir les messages privés sur le site?

+0

Les non-admins les voient aussi? – jitter

+0

Est-ce parce que votre utilisateur Admin a légèrement plus d'autorisations que les utilisateurs normaux? Avez-vous essayé de créer un utilisateur "Abonné" standard et de voir si vous avez le même problème? – Amadiere

+0

Il n'y a que deux utilisateurs sur le système, les deux administrateurs. Je ne veux pas voir les messages privés sur ce blog (sur le front-end, je veux dire - vous le savez, naviguer sur le site comme un utilisateur) alors que vous êtes connecté. Donc, créer un utilisateur "abonné" n'aiderait pas encore besoin d'être connecté en tant qu'administrateur pour faire la maintenance du site backend et autres. – Asparagirl

Répondre

18

La façon hack pour faire ce que vous voulez est de mettre cette ligne de code en haut de la boucle (après la the_post() partie:

if(get_post_status()=='private') continue; 

C'est la façon hack parce que votre WordPress est toujours en train de charger ce message à partir de la base de données et de le factoriser pour publier les comptes, etc, mais en le sautant pour l'afficher.Si vous recherchiez une phrase qui était uniquement dans les publications privées, vous obtiendrez une page blanche sans erreur, par exemple

La méthode correcte consiste à ajouter un filtre qui modifie le SQL utilisé pour générer t La liste des publications Le plus difficile est de ne pas le filtrer si vous êtes dans la section admin, sinon vous ne verrez plus jamais vos posts privés. Le meilleur endroit pour ce filtre est dans le fichier functions.php de votre thème. Voici ce que vous devriez mettre là-dedans:

add_filter('posts_where', 'no_privates'); 
function no_privates($where) { 
    if(is_admin()) return $where; 

    global $wpdb; 
    return " $where AND {$wpdb->posts}.post_status != 'private' "; 
} 
+0

Je suis tombé sur le même problème pour mon wordpress. Votre solution semble applicable. Pouvez-vous dire ce que le fichier php impliqué? et, où devrait add_filter ('posts_where', 'no_privates'); être ajouté? – Elaine

+0

Merci pour la réponse! J'ai résolu mon problème et je n'ai pas pu le trouver ailleurs sur le web. –

+0

+ Elaine Le fichier php est functions.php et se trouve dans le répertoire de votre thème. Vous pouvez ajouter ce code à peu près partout dans functions.php comme directement après

0

Ceci n'est pas une solution directe à la question exacte, mais une façon de masquer ces messages consiste à les affecter à une catégorie spéciale, puis à masquer cette catégorie pour qu'elle s'affiche dans la boucle. Pour exclure les messages d'une catégorie donnée d'affichage, à l'intérieur de la boucle (immédiatement après l'instruction while()) utilisent cette ligne de code:

<?php if (in_category('3')) continue; ?> 

Dans cet exemple, 3 est la catégorie ID de la catégorie à exclure, et le code dit simplement à WordPress de continuer sur le prochain message sans afficher celui-ci.

1

Donc, si personne ne doit voir ces messages privés, y compris les admins, pourquoi ne pas simplement définir leur statut non publié ou projet?

+0

L'une des raisons est que vous avez une tonne d'utilisateurs et ils définissent des postes à privé même si, comme vous l'avez dit, non publié ou brouillon serait une meilleure solution. –

Questions connexes