Limitarea accesului la articole/pagini în funcție de rolurile utilizatorilor
Caut o modalitate de a proteja conținutul în funcție de rolurile utilizatorilor.
Exemplu:
trebuie să fii înregistrat pentru a vizualiza articolele (frontend).
Dacă un utilizator este abonat poate citi articolele 1, 2 și 3, dar dacă utilizatorul este contributor poate vedea articolele 1,2,3 și 4,5,6...
știe cineva cum pot face acest lucru?

poți folosi astfel de condiții pentru a afișa postări private doar utilizatorilor autentificați cu rolul de contributor
. Acum trebuie doar să faci postarea private
pentru a o face disponibilă contributorului.
<?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' ) ) { //trecerea rolului poate uneori să nu funcționeze
the_title();
the_content();
} else { // textul care se afișează în locul postării
echo 'această postare este privată, doar contributorii o pot vizualiza';
}
} else { // aceasta este vizibilă pentru toți
the_title();
the_content();
}
endwhile;
endif;
?>

Deși nu am folosit personal acest lucru, probabil că te uiți la un plugin precum acesta
Pare să ofere toată funcționalitatea pe care ai cerut-o mai sus.

Tocmai am încercat acest plugin. Nu face exact ce am nevoie, dar aproape... sau... este prea complicat!!

Tocmai am instalat plugin-ul și este foarte ușor de configurat accesul la anumite articole pentru abonați și apoi de oferit mai multe drepturi contributorilor.

da, în backend, dar am nevoie să definesc accesul în frontend. Cine poate sau nu poate citi articole, definit în funcție de rolurile utilizatorilor.

Da, poți face asta cu pluginul (Vezi captura de ecran la http://s.wordpress.org/extend/plugins/advanced-access-manager/screenshot-4.jpg?r=580686)

Pentru a realiza ceva similar, puteți face unele articole private și le puteți afișa doar utilizatorilor autentificați. Mai întâi trebuie să adăugați un câmp personalizat, pe care îl puteți numi "private" și să-i setați valoarea la "True". Apoi înlocuiți bucla WP implicită cu acest fragment de cod:
<?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()) {
// Afișează articolul privat pentru utilizatorul autentificat
}
} else {
// Afișează articolul public pentru toată lumea
}
endwhile; endif; ?>
