Benutzerdefinierte rollenbasierte Benutzer können nicht auf wp-admin zugreifen

Zuallererst bin ich ein WordPress-Lerner. Tut mir leid, wenn mein Code dumm aussieht!

Ich habe ein benutzerdefiniertes Design mit einer benutzerdefinierten Benutzerrolle erstellt. Ich entwickle kein Plugin.

In meiner fucntions.php-Datei habe ich den folgenden Code geschrieben, um eine Benutzerrolle zu erstellen. Benutzer, die dieser Rolle zugewiesen sind, sollten sich beim Administrator anmelden, aber nur auf ihre Profilseiten zugreifen können.

add_action('init', 'yrc_cst_register_role_customer_service_rep'); /** * Register new user role */ function yrc_cst_register_role_customer_service_rep() { $wp_roles = new WP_Roles(); $wp_roles->remove_role('subscriber'); $wp_roles->remove_role('editor'); $wp_roles->remove_role('contributor'); $wp_roles->remove_role('author'); $service_rep_caps = array( 'read' => false, 'create_posts' => false, 'edit_posts' => false, 'edit_others_posts' => false, 'publish_posts' => false, 'manage_categories' => false, 'manage_options' => false, ); add_role('customer_service', __('Customer Service'), $service_rep_caps); } 

Ich habe alle Rollen außer Administrator entfernt, da für dieses Portal keine andere Rolle erforderlich ist. Der Administrator erstellt nur Benutzer mit einer Kundendienstrolle .

Ich habe kein Drittanbieter-Plugin im System installiert.

Benutzer mit der benutzerdefinierten Rolle können sich über eine benutzerdefinierte Anmeldeseite, die ordnungsgemäß funktioniert, beim System anmelden. Wenn sie jedoch versuchen, auf ihre Profilseite zuzugreifen, wird folgende Fehlermeldung angezeigt:

Entschuldigung, Sie haben keinen Zugriff auf diese Seite.

Gibt es etwas wie 'edit_profile' => true ?

Ich muss etwas falsch machen, aber mein begrenztes Wissen ist nicht genug, um das herauszufinden. Jeder Vorschlag würde sehr geschätzt werden.

Solutions Collecting From Web of "Benutzerdefinierte rollenbasierte Benutzer können nicht auf wp-admin zugreifen"

Die Lesefähigkeit muss auf ” true , damit sie darauf zugreifen können.

Beachten Sie, dass Rollen in der database gespeichert werden. Wenn Sie sie bei jeder init Aktion ausführen, wird dies als zeitaufwendig angesehen.

Der Codex schlägt vor, diese Aktionen in register_activation_hook() auszuführen. Da Sie diesen Code in Ihrem Design verwenden, möchten Sie möglicherweise überprüfen, ob die Rolle vorhanden ist.

Da Sie dies in einem Design ausführen, könnte dies eine Umgehung sein:

 function yrc_cst_register_role_customer_service_rep() { $wp_roles = new WP_Roles(); //$wp_roles->remove_role('customer_service'); // Remove it only for test purposes. if ( $wp_roles->is_role( 'customer_service' ) ) { return; } $wp_roles->remove_role('subscriber'); $wp_roles->remove_role('editor'); $wp_roles->remove_role('contributor'); $wp_roles->remove_role('author'); $service_rep_caps = array( 'read' => true, ); add_role('customer_service', __('Customer Service'), $service_rep_caps); }