Funktio sivujen piilottamiseen WordPressin ohjauspaneelin muokkausnäkymässä käyttäjätason mukaan

Rakennan paraikaa monen käyttäjän WordPress-ympäristöä. Käyttäjät on jaettu ryhmiin, joilla jokaisella on tietyt oikeudet. Oikeudet liittyvät erityisesti WordPressin hallintapaneeliin. Tarkoitus on rajoittaa ryhmien kykyä muokata tiettyjä sivuja.

On varsin vaivatonta säädellä käyttäjäryhmien oikeuksia esimerkiksi Members-pluginilla. Se ei kuitenkaan taivu siihen, että tietylle ryhmälle sallittaisiin vain tiettyjen sivujen muokkaus hallintapaneelissa. Siinä tapauksessa on järkevintä luoda näille ryhmille omat suodattimet, jotka näyttävät vain ne sivut joita he saavat muokata.

Suurin osa valmiista plugineista on tarkoitettu piilottamaan sivuja ja artikkeleita julkisella sivustolla. Ne harvat, jotka on tarkoitettu hallintapaneeliin, kuten Manage your posts only, näyttävät artikkelin kirjoittajalle vain hänen kirjoittamansa artikkelit. Tapauksessamme alkuperäinen kirjoittaja ei kuitenkaan ole sama kuin muokkaaja.

Muokaten koodia em. pluginista (se on oikeastaan vain funktio, jonka voi sellaisenaan lisätä functions.php -tiedostoon) sain sen näyttämään tietyt sivut tietyille käyttäjäryhmille. Käyttäjäryhmien kyvyt (instructor, organizer, office) on asetettu Members-pluginilla.

function edit_page_per_capability($query) {
if ( strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/edit-pages.php' ) !== false ) {
   if (current_user_can('organizer')) {
      $query->set('post__in', array(184,186) );
   }
   elseif ( current_user_can( 'instructor' ) ) {
      $query->set('page_id', '186');
   }
   elseif ( current_user_can( 'office' ) ) {
      $query->set('page_id', '8');
   }
}
}
add_filter('pre_get_posts','edit_page_per_capability');

Numerot osoittavat ne sivut, jotka ryhmille näkyvät hallintapaneelin sivunmuokkausosiossa. Yksittäisille sivuille riittää pelkkä numero, mutta monta sivua täytyy sijoittaa taulukkoon (array). Toiminnoista voi lukea lisää WordPress Codexin osiosta query_posts.

HUOM! WordPressin versiosta 3.0 lähtien sivunmuokkausnäkymän URL on muuttunut. Sen pitäisi joka tapauksessa osoittaa Pages/Sivut -osioon. Uusi URL on ’/wp-admin/edit.php?post_type=page’

Esittelemäni koodin voit lisätä functions.php -tiedostoon sellaisenaan ja muokata sitä omiin tarkoituksiisi.

One thought on “Funktio sivujen piilottamiseen WordPressin ohjauspaneelin muokkausnäkymässä käyttäjätason mukaan

Comments are closed.