Geben Sie dem Editor Zugriff auf die Seitenleiste

15

Ich möchte der Editor-Rolle den Zugriff auf die Bearbeitung der Seitenleiste und ihres Inhalts gewähren. Ich habe dort ein Text-Widget und um dieses Text-Widget zu bearbeiten, muss der Benutzer ein Administrator sein - das ist zum Kotzen. Wie erteile ich der Editorrolle die Berechtigung zum Bearbeiten der Seitenleiste?

Howdy_McGee
quelle
Dies kann im Zusammenhang stehen: wordpress.stackexchange.com/questions/13413/…
Elliott
Es scheint irgendwie das zu sein, wonach ich suche, aber ich verstehe den Code nicht. Es sieht so aus, als würde er einen neuen Benutzer erstellen und Rollen zuweisen, anstatt einen vorhandenen Benutzer zu
bearbeiten

Antworten:

21

Die edit_theme_optionsFunktion sollte es dem Benutzer ermöglichen, die Seitenleiste wie auf dieser Seite beschrieben zu bearbeiten: http://codex.wordpress.org/Appearance_Widgets_SubPanel

Code zum Hinzufügen functions.php

   $role = get_role('editor'); 
   $role->add_cap('edit_theme_options');

Bearbeiten:

Dies sollte funktionieren, um zu verhindern, dass der Editor auf Themen oder Menüs zugreift

function custom_admin_menu() {

    $user = new WP_User(get_current_user_id());     
    if (!empty( $user->roles) && is_array($user->roles)) {
        foreach ($user->roles as $role)
            $role = $role;
    }

    if($role == "editor") { 
       remove_submenu_page( 'themes.php', 'themes.php' );
       remove_submenu_page( 'themes.php', 'nav-menus.php' ); 
    }       
}

add_action('admin_menu', 'custom_admin_menu');

Ich hatte keine Gelegenheit, dies zu testen, aber es entfernt sie nur aus dem Menü. Sie können möglicherweise trotzdem darauf zugreifen, indem Sie die URL direkt eingeben.

Elliott
quelle
Das funktioniert wie ein Zauber, aber wie halte ich sie dann davon ab, auf Menüs oder Themen zuzugreifen?
Howdy_McGee
Siehe meine bearbeitete Antwort.
Elliott
Schwerwiegender Fehler: Aufruf der undefinierten Funktion remove_menu_page () - Ich mache mir auch keine Sorgen, dass sie diese über die URL eingeben. Ich bezweifle wirklich, dass jemand so bösartig sein wird, und trotzdem handelt es sich nur um Themen und Menüs. Und ich kann deinen Beitrag nicht genug +1! Vielen Dank!
Howdy_McGee
Tut mir leid, falscher Code hinzugefügt. Es sollte aber sein, remove_submenu_pagedass Sie den schwerwiegenden Fehler immer noch nicht haben sollten. Ich habe meine Antwort bearbeitet und getestet und alles funktioniert gut für mich?
Elliott,
1
Oh das wäre, warum dann nur seit 3.1.0 unterstützt wurde, ich habe keine Fehler seit dem Upgrade gehabt ... Ich würde immer empfehlen, ein Upgrade auf die neueste Version durchzuführen, um die Sicherheit zu gewährleisten.
Elliott,
1

Wenn Sie dies nur so einfach wie möglich konfigurieren möchten, verwenden Sie das Mitglieder-Plugin. Die Fähigkeit, die Sie hinzufügen müssen, ist 'edit_theme_options'. Beachten Sie, dass dies nicht nur den Widgets-Bereich, sondern auch den Editor-Zugriff auf das gesamte Menü "Darstellung" ermöglicht. Siehe hier

http://wordpress.org/extend/plugins/members/

Wenn Sie dies programmgesteuert ausführen möchten, müssen Sie add_cap () verwenden.

$editor = get_role('editor');
$editor->add_cap('edit_theme_options');

Sie können diesen Code in ein eigenes Plugin werfen und fertig. Oder setzen Sie es in functions.php .

eddiemoya
quelle
Und wenn jemand den beliebten Benutzerrollen-Editor verwendet, können Sie dort auch die Option "Designoptionen bearbeiten" / "edit_theme_options" auswählen.