Es ist sinnvoll, dass Kunden nicht alles im Backend machen dürfen | Johannes Ulrich Gehrke
Es ist sinnvoll, dass Kunden nicht alles im Backend machen dürfen
<?php

/*
 *  REGISTRIERT NEUE NUTZER ROLLEN 
 *  FÜR KUNDEN / CLIENTS
 * 
 *  Client Master > Kann alles vom Editor + Nutzer, Menüs, Widgets & Customzier bearbeiten
 *  Client User   > Kann alles vom Editor + Menüs & Widgets bearbeiten
 * 
 *  Clients können nichts updaten oder selbst installieren
 * 
 */
function user_role_clients() {
	
	// *** ROLLE: CLIENT MASTER USER ***
	// Prüfen ob "Client Master User" bereits existiert
	if ( !get_role( 'client_master_user' ) ) {
		$user_capabilities = get_role( 'editor' )->capabilities; // Basis ist die 'Editor'-Rolle
		$user_capabilities = array_merge(
			$user_capabilities,
			// Zusätzliche Optionen hier hinzufügen
			array(
				// Client Master kann jetzt Nutzer bearbeiten
				'list_users'	=> true,
				'create_users'  => true,
				'edit_users'	=> true,
				'promote_users' => true,
				'delete_users'  => true,
				'remove_users'  => true,
				
				// Client Master kann Menüs & Widgets bearbeiten
				'edit_theme_options' => true,
				
				// Client Master kann in das Theme>Custumize Menü gehen
				'customize' => true,
			)
		);
		add_role( 'client_master_user', 'Client Master-User', $user_capabilities ); // Nutzer-Rolle hinzufügen
	}
	
	// *** ROLLE: CLIENT USER ***
	// Prüfen ob "Client  User" bereits existiert
	if ( !get_role( 'client_user' ) ) {
		$user_capabilities = get_role( 'editor' )->capabilities; // Basis ist die 'Editor'-Rolle
		$user_capabilities = array_merge(
			$user_capabilities,
			// Zusätzliche Optionen hier hinzufügen
			array(
				// Client User kann Menüs & Widgets bearbeiten
				'edit_theme_options' => true,
			)
		);
		add_role( 'client_user', 'Client User', $user_capabilities ); // Nutzer-Rolle hinzufügen
	}
	
}
	

add_action( 'admin_init', 'user_role_clients' );
Hier werden zwei neue Rollen angelegt: Client Master User & Client User ( Quelle )

Neue Nutzerrollen für Kunden im WordPress anlegen

Wenn man eine WordPress-Seite einem Kunden übergibt, muss man für diesen meistens auch einen Nutzer anlegen. Es kann sinnvoll sein dem Client eine neue spezielle Kunden-Rolle zu zuweisen.

Der Kunde bekommt natürlich immer einen Account zu seiner eigenen WordPress-Seite. Jeder neue User hat bestimmte Rechte & Möglichkeiten. Bei WordPress ist es oft das Problem, dass man dem Kunden einen Administratoren Zugang einrichtet, weil die Rolle als „Editor / Redakteur“ zu wenig kann. Ein Admin-Account hat leider jedoch auch Zugriff auf alles, z.B. Theme-Updates oder Plugin-Installation. Gerade unerfahrene Nutzer können hier einiges im System kaputt machen. Der „Editor / Redakteur“ Rolle fehlen jedoch wichtige Fähigkeiten, wie z.B. Menüs anpassen oder Kollegen als neue Nutzer anzulegen.

Ich bin letztens über das Starter-Theme Silencio gestolpert, welches von Haus aus eine neue Nutzer Rolle für Clients anlegt. Anhand des Codes von Ihnen habe ich ein Snippet geschrieben, welches zwei neue Rollen anlegt. Die neuen Rollen sind erweiterte „Editor / Redakteur“-Rollen und können zusätzlich:

  • Client Master User ( Kann neue Nutzer anlegen, Menüs & Widgets bearbeiten )
  • Client User ( Kann Menüs & Widgets bearbeiten )

Ich denke der Code ist mit den Kommentaren recht verständlich. Prinzipiell wird ein Array erstellt mit allen benötigten Fähigkeiten und dann die neue Nutzer-Rolle registriert. Eine Liste aller Nutzer-Fähigkeiten die eingestellt werden können, findet man hier: