Rolle auf ein Plugin beschränken

Gibt es eine Möglichkeit, dies ohne Verwendung eines anderen Plugins und ohne Änderung des WP-Core-Codes zu tun:

Ich möchte dem benutzerdefinierten Plugin geben, dass ich eine Einstellungsseite schreibe. Also muss ich der Rolle, die mein Plugin benutzt, Plugin-Fähigkeiten hinzufügen. Ich möchte jedoch nicht, dass diese Benutzer die Einstellungen für andere Plug-Ins, die möglicherweise installiert sind, sehen oder ändern können. Nur mein Plugin.

Ich hatte gehofft, es gäbe etwas wie $ role_object-> add_cap (‘update_settings_myPlugin’) , ähnlich wie man functionen für benutzerdefinierte Post-Typen zuordnen kann.

Solutions Collecting From Web of "Rolle auf ein Plugin beschränken"

Mann. Das war nicht leicht zu jagen. Die oben genannten Antworten funktionieren absolut nicht, es sei denn, Sie geben der Rolle des Benutzers eine sehr breite “manage_options” -Fähigkeit. Ich habe das Trac-Problem hier gefragt (und beantwortet): Admin-Optionsbildschirm wurde nicht gespeichert, es sei denn, der Benutzer hat die Option manage_options

Jeder, der in der Zukunft diesen Text suchen / lesen könnte, besteht darin, diese neue Filterfunktion zu nutzen, um die erforderliche functionalität für die engeren “Verwaltungsoptionen” -Aktivität für Ihr spezifisches Plug-in oder Thema zu registrieren.

Wenn ich dich verstehe, sollte das, was du denkst, funktionieren. add_menu_page() oder verwandte Seiten- und Einstellungsseitenfunktionen akzeptieren ein Argument für die erforderliche Fähigkeit. Beispielsweise:

 add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position ); 

Der dritte Parameter ist “Die für dieses Menü erforderliche Fähigkeit, dem Benutzer angezeigt zu werden”. Setze das auf eine Fähigkeit deiner eigenen Erfindung und füge diese Fähigkeit dann deinem Benutzer hinzu :

 $user = new WP_User( $user_id ); $user->add_cap( 'can_edit_posts' ); 

Oder zu einer Rolle :

 // get the the role object $role_object = get_role( $role_name ); // add $cap capability to this role object $role_object->add_cap( $capability_name );