Aufgabe: Die Standardrolle neu anzumeldender Benutzer soll sie berechtigen Beiträge zu schreiben, Dateien hochzuladen und das Ergebnis zur Revision vorzulegen, nicht jedoch Beiträge selbst zu veröffentlichen.
Administratoren, Redakteuere und Autoren dürfen Beiträge veröffentlichen, Mitarbeiter (contributors) nicht. Das war die Usergruppe von der ich ausging. Da ein Mitarbeiter jedoch keine Dateien hochladen darf, muss ihm dafür noch die Berechtigung in der functions.php
des Themes erteilt werden.
Ansatz
function add_theme_caps() {
// get the "contributor" role
$role = get_role( 'contributor' );
// let contributor build galleries
$role->add_cap( 'upload_files' );
add_action( 'admin_init', 'add_theme_caps');
Da die Berechtigung in der Datenbank gespeichert wird, muss sie nur einmal vergeben werden. Daher ist es besser, den Vorgang nur einmal auszuführen, wenn eine Theme oder Plugin aktiviert wird.
Lösung
function add_theme_caps(){
global $pagenow;
$role = get_role( 'contributor' );
if ( 'themes.php' == $pagenow && isset( $_GET['activated'] ) ){
$role->add_cap( 'upload_files' );
} else {
$role->remove_cap( 'upload_files' );
}
}
add_action( 'load-themes.php', 'add_theme_caps' );
Schreibe einen Kommentar