2009-06-16 6 views
7

In una nuova installazione di WordPress 2.8, ho alcuni post assegnati alla categoria Foo che in precedenza erano pubblici ma sono stati resi privati. Quando sono connesso a WordPress (come amministratore) e accetto anche di sfogliare la pagina della categoria Foo in una scheda diversa nello stesso browser, posso vedere i post privati ​​nella pagina della categoria, con i titoli delle voci preceduti dalla parola " PRIVATO: ".WordPress visualizza post privati ​​per gli utenti che hanno effettuato l'accesso - come disattivare questa funzionalità?

Ora, nulla è "rotto" a questo proposito - i post sono nascosti correttamente dagli utenti non registrati. Ma non voglio che gli utenti loggati vedano i post privati ​​sul sito live, perché francamente è solo fastidioso, non utile.

Cosa devo fare sul loop WP sulla pagina di archivio delle categorie o sul file delle funzioni per disattivare questa capacità indesiderata di vedere post privati ​​sul sito?

+0

Anche i non amministratori li vedono? – jitter

+0

È perché il tuo utente amministratore ha un po 'più di permessi rispetto ai normali utenti? Hai provato a creare un utente "Abbonato" standard e vedere se ottieni lo stesso problema? – Amadiere

+0

Ci sono solo due utenti sul sistema, entrambi gli amministratori. Non voglio vedere post privati ​​su questo blog (sul front end, intendo - sai, navigando nel sito come un utente) mentre sei loggato. Quindi creare un utente "subscriber" non aiuterebbe questo argomento - I ancora bisogno di essere registrato come amministratore per fare manutenzione del back-end del sito e così via. – Asparagirl

risposta

18

Il modo hack per fare quello che vuoi è di mettere questa riga di codice nella parte superiore del vostro ciclo (dopo il the_post() parte:

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

Questo è il modo mod perché il vostro WordPress sta ancora caricando quel post dal database e lo sta includendo per postare conteggi, ecc, ma saltandolo quando lo si visualizza. Se si cercava una frase che era solo in post privati, si otterrebbe una pagina vuota senza errori, per esempio

Il modo corretto per fare ciò è aggiungere un filtro che modifichi l'SQL utilizzato per generare t lui lista di messaggi. La parte più difficile è non filtrarla se ti trovi nella sezione di amministrazione, altrimenti non vedrai più i tuoi post privati. Il posto migliore per questo filtro è nel file functions.php del tuo tema. Ecco cosa si dovrebbe mettere in là:

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

Mi sono imbattuto nello stesso problema per il mio wordpress. La tua soluzione sembra applicabile. Sai dire in cosa consiste il file php? e, dove dovrebbe add_filter ('posts_where', 'no_privates'); Essere aggiunto? – Elaine

+0

Grazie per la risposta! Risolto il mio problema e non riuscivo a trovarlo da nessun'altra parte sul web. –

+0

+ Elaine Il file php è functions.php e si trova nella directory dei temi. Puoi aggiungere questo codice praticamente ovunque in functions.php come direttamente dopo

0

Questa non è una soluzione diretta alla domanda esatta, ma un modo in cui è possibile nascondere quei post è assegnarli a una categoria speciale, quindi nascondere quella categoria dalla visualizzazione nel ciclo. Per escludere i messaggi da una determinata categoria di esposizione, all'interno del ciclo (immediatamente dopo il while()) utilizzare questa riga di codice:

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

In questo esempio, 3 è l'ID della categoria della categoria da escludere, e il codice dice semplicemente a WordPress di continuare al prossimo post senza visualizzare questo.

1

Quindi, se nessuno è a visualizzare questi messaggi privati, tra cui amministratori, perché non solo il loro stato di inediti o progetto?

+0

Una ragione è che hai un sacco di utenti e loro stanno impostando i post su privato anche se, come hai detto, non pubblicati o bozze sarebbero una soluzione migliore. –

Problemi correlati