Fehlende Rechte für Redakteure
WordPress enthält ein ausgeklügeltes Berechtigungs-System (wovon die meisten “Entwickler” von Plugins leider nichts wissen – aber das ist Thema eines anderen Blog-Beitrages!).
Und standardmäßig hat die Rolle “Redakteur” keinen Zugriff auf das “Design”-Menü:
Es fehlt schlicht die Berechtigung ‘edit_theme_options’.
Doch Vorsicht – mit diesen Rechten können Redakteure auf das gesamte Design-Menü zugreifen. Also auch das Theme wechseln oder im Customizer Einstellungen ändern!
Wasserdichte Angebote schreiben in nur 10 Minuten?
Hol dir die ultimative Angebotsvorlage für Webdesigner, Web-Programmierer und Online-Marketer.
Die Lösung
Um Redakteuren deiner Website die Rechte zu geben das Menü zu bearbeiten, aber sonst keine Einstellungen vornehmen zu können, füge dieses Code-Snippet in die functions.php deines Child-Themes ein:
/**
* Allow editors to see access the Menus page under Appearance but hide other options
* Note that users who know the correct path to the hidden options can still access them
*/
add_action('admin_menu', function() {
$user = wp_get_current_user();
// Check if the current user is an Editor - or bail
if(!in_array( 'editor', (array) $user->roles )) return;
// They're an editor, so grant the edit_theme_options capability if they don't have it
if ( !current_user_can( 'edit_theme_options' ) ) {
$role_object = get_role( 'editor' );
$role_object->add_cap( 'edit_theme_options' );
}
// Hide the Themes page
remove_submenu_page( 'themes.php', 'themes.php' );
// Hide the Widgets page
remove_submenu_page( 'themes.php', 'widgets.php' );
// Hide the Customize page
remove_submenu_page( 'themes.php', 'customize.php' );
// Remove Customize from the Appearance submenu
global $submenu;
unset($submenu['themes.php'][6]);
});
Danach sehen Redakteure den entsprechenden Menü-Eintrag und können die Menüs bearbeiten.
Funktioniert dieses Code-Snippet noch?
Alle Code-Snippets auf dieser Website sind bei meiner eigenen Website oder auf der Website eines Kunden im Einsatz. Doch WordPress entwickelt sich ständig weiter.
Daher kann es sein, dass dieses Code-Snippet nicht mehr funktioniert oder angepasst werden muss.
Hinterlasse mir in diesem Fall gerne einen Kommentar, und ich werde das Code-Snippet anpassen.
Lass uns einfach Websites bauen,
Michael
4 Antworten
Hallo,
ich würde gern Redakteuren meiner Website die Rechte zu geben das Menü zu bearbeiten, aber sonst keine Einstellungen vornehmen zu können, füge dieses Code-Snippet in die functions.php deines Child-Themes ein:
Wie und wo füge ich den Code ein. Kann man dazu auch mal telefonieren?
Lieber Thomas,
wenn du Hilfe mit dem Child-Theme benötigst, dann wende dich gerne an die Website Heroes.
lg Michael
Hallo, ich habe das ausprobiert und festgestellt, dass nicht nur das Menü bearbeitet werden kann, sondern auch der Befehl ‚Customize‘, ‚Haeder‘ und ‚Hintergrund‘ sichtbar ist. Daher wollte ich das noch mal rückgängig machen und habe den Block wieder aus der ‚fuction.php‘ entfernt. Leider werden dann aber alle Befehle des ‚Designs‘ angezeigt.
Wie kann ich das noch mal rückgängig machen?
Hallo Andy,
mit dem Plugin „User Role Editor“ kannst du dem Editor wieder die Capability „edit_theme_options“ entziehen…
lg Michael