Wie kann ich zulassen, dass die Editorrolle Designeinstellungen ändert?

22

Ich habe gerade einen neuen Blog für einen Freund eingerichtet und dachte, es sei besser, ihm vorsichtshalber nicht sofort Administratorzugriff zu gewähren.

Ich habe daher einen neuen Benutzer als Editor angelegt.

Aber dann habe ich gesehen, dass dieser Benutzer die Theme-Einstellungen wie Hintergrund und Header nicht ändern kann.

Gibt es eine einfache Möglichkeit, der Editor-Rolle das Bearbeiten von Themeneinstellungen in Twenty Ten oder einem untergeordneten Element davon zu ermöglichen? Er sollte grundsätzlich in der Lage sein, alles zu tun, was ein Administrator tun kann. das Thema, wahrscheinlich sogar wechselnde Themen.

hakre
quelle
2
Erinnert mich ... Ich habe ein Plugin dafür geschrieben: Theme-Optionen für Redakteure
fuxia

Antworten:

21

Sie können der Editorrolle Funktionen hinzufügen, indem Sie das Rollenobjekt und add_cap in Ihrer functions.php verwenden

<?php
   // get the the role object
   $editor = get_role('editor');
   // add $cap capability to this role object
   $editor->add_cap('edit_theme_options');
?>

Sie können auch Funktionen entfernen:

$editor->remove_cap('delete_posts'); 

Werfen Sie einen Blick auf die Liste der Funktionen und deren Bedeutung.

Bainternet
quelle
3
Cool, das hat funktioniert! Für die Shorties: get_role('editor')->add_cap('edit_theme_options');:)
hakre
1
@hakre FYI Direkte Variablenzuweisungen wie diese a()->b()funktionieren in PHP-Versionen vor 5.
hitautodestruct
Da Rollen normalerweise in einer Datenbank gespeichert sind, sollte die Aktualisierung von Rollen in einem Plugin und dort in einem Aktivierungs- / Deaktivierungs-Hook erfolgen. Es ist einfach nicht notwendig, diesen Code bei jedem WordPress-Prozess auszuführen.
David
6

Da dies der erste Treffer bei Google für diese Frage ist, bin ich der Meinung, dass dies der richtige Ort für ein Update ist:

Für mich konnte ich es nicht zum Laufen bringen edit_theme_options. Dann habe ich die Plugin-Quelle gelesen und herausgefunden, dass es tatsächlich so ist manage_options. Und es hat funktioniert.

tl; dr:

$role_object = get_role( 'editor' );
$role_object->add_cap( 'manage_options' );

arbeitet für mich (im Jahr 2014)

Sebastian Schmid
quelle
Tolle Sachen Alter ...
Abbas
Musste noch eine Zeile für WP> 4.0$role_object->add_cap('customize');
Alex
1

Ein weiteres großartiges Plugin ist der User Role Editor (http://wordpress.org/extend/plugins/user-role-editor/). Es ähnelt dem von Members, ist jedoch einfacher und einfacher zu bedienen. Darüber hinaus sind die Entwickler immer zur Stelle, um sich Feedback anzuhören und bei Bedarf Unterstützung anzubieten.

Travis Pflanz
quelle
0

Dies ist alt, aber hier ist eine neuere Möglichkeit, dies zu erreichen:

add_filter( 'user_has_cap',
function( $caps ) {
    if ( ! empty( $caps['edit_pages'] ) )
        $caps['edit_theme_options'] = true;
    return $caps;
} );
Bryan Willis
quelle