Limitare l'accesso ai post/pagine in base ai ruoli utente
Sto cercando un modo per proteggere i contenuti in base ai ruoli utente.
Esempio:
è necessario essere registrati per visualizzare i post (frontend).
Se un utente è un subscriber può leggere i post 1, 2 e 3, ma se l'utente è un contributor può visualizzare i post 1,2,3 e 4,5,6...
qualcuno sa come posso fare questo?

puoi utilizzare queste condizioni per mostrare i post privati solo agli utenti loggati con il ruolo contributor
. Ora devi solo impostare il post come private
per renderlo disponibile per i contributor.
<?php
if ( have_posts() ) : while ( have_posts() ) : the_post();
$private = get_post_custom_values("private");
if (isset($private[0]) && $private == "true") {
if ( current_user_can( 'contributor' ) ) { //passare il ruolo a volte potrebbe non funzionare
the_title();
the_content();
} else { // testo da mostrare al posto del post
echo 'questo post è privato, solo i contributor possono vederlo';
}
} else { // questo è visibile a tutti
the_title();
the_content();
}
endwhile;
endif;
?>

Anche se personalmente non l'ho utilizzato, probabilmente stai cercando un plugin come questo.
Sembra fornire tutte le funzionalità che hai richiesto sopra.

L'ho appena provato. Non fa quello di cui ho bisogno, ma ci si avvicina... oppure... è troppo complicato!!

Ho appena installato il plugin ed è molto semplice configurare l'accesso a determinati articoli per gli abbonati e poi concedere più accesso ai collaboratori.

sì, backend, ma ho bisogno di definire l'accesso frontend. Chi può o non può leggere gli articoli, definito dai ruoli utente.

Sì, puoi farlo con il plugin (Vedi screenshot su http://s.wordpress.org/extend/plugins/advanced-access-manager/screenshot-4.jpg?r=580686)

Per ottenere qualcosa del genere puoi rendere alcuni articoli privati e mostrarli solo agli utenti loggati. Per prima cosa devi aggiungere un campo personalizzato, puoi chiamarlo "private" e impostare il valore su "True". Poi sostituisci il loop predefinito di WordPress con questo frammento di codice:
<?php if (have_posts()) : while (have_posts()) : the_post();
$private = get_post_custom_values("private");
if (isset($private[0]) && $private == "true") {
if (is_user_logged_in()) {
// Mostra l'articolo privato all'utente loggato
}
} else {
// Mostra l'articolo pubblico a tutti
}
endwhile; endif; ?>
