WordPress: User soll keine Beiträge veröffentlichen, jedoch Dateien hochladen dürfen

steering 801807 1920
Bildquelle: Pixabay, Free-Photos

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' );

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht

publicly queryable