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

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?

Willst du einen Website-Check gewinnen?