Michael Baierl – WordPress-Profi aus Wien.

WordPress: Menü bearbeiten für Redakteure

Menü bearbeiten für WordPress-Redakteure

Üblicherweise bekommen Kunden von mir vollen Administrations-Zugang zu ihrer eigenen Website. Alles andere entspricht nicht meinen Business-Grundsätzen.

Aber ab und zu bekommen nicht alle Mitarbeiter des Kunden den vollen Zugriff – diese können als WordPress-Redakteure zwar Inhalte bearbeiten, aber keine Plugins installieren oder Einstellungen ändern.

Ein Problem, das sich dann aber ergibt: WordPress-User mit der Rolle “Redakteur” können das Menü nicht bearbeiten

Inhalt

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ü:

Das Design-Menü von WordPress
Das Design-Menü von WordPress – für Administratoren

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!

7 Bausteine für dein Online-Business

Du träumst von deinem eigenen Online-Business, weißt aber nicht genau, wie du starten sollst? 

Hole dir gleich meinen Report über die
7 Bausteine für dein Online-Business –
für Newsletter-Abonnenten kostenlos.
Also jetzt anmelden!

Die Abmeldung vom Newsletter ist jederzeit möglich. Details in der Datenschutzerklärung.

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.

Ansicht für Redakteure
Ansicht für Redakteure

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,

Schreibe einen Kommentar

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

Projektanfrage

Wobei kann ich dich unterstützen?