Jak mogę zezwolić roli edytora na zmianę ustawień motywu?

22

Właśnie założyłem nowego bloga dla przyjaciela i pomyślałem, że lepiej nie dawać mu od razu dostępu administratora jako środka ostrożności.

Dlatego utworzyłem nowego użytkownika jako edytor.

Ale potem zobaczyłem, że ten użytkownik nie może zmienić ustawień motywu, takich jak Tło i Nagłówek.

Czy istnieje prosty sposób, aby zezwolić roli edytora na edycję ustawień motywu w dwudziestu dziesięciu lub jego potomku? Zasadniczo powinien być w stanie zrobić wszystko, co administrator może zrobić. motyw, prawdopodobnie nawet zmieniający motywy.

hakre
źródło
2
Przypomina mi… Napisałem do tego wtyczkę: Opcje motywu dla redaktorów
fuxia

Odpowiedzi:

21

możesz dodać możliwości do roli edytora za pomocą obiektu roli i add_cap z twoich functions.php

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

możesz także usunąć możliwości:

$editor->remove_cap('delete_posts'); 

wystarczy spojrzeć na listę możliwości i ich znaczenie.

Bainternet
źródło
3
Fajnie, to działało! Na skróty: get_role('editor')->add_cap('edit_theme_options');:)
hakre
1
@hakre FYI Bezpośrednie przypisania zmiennych bezpośrednie a()->b()nie będą działać w wersjach PHP wcześniejszych niż 5.
hitautodestruct 10.04.2013
Ponieważ role są zwykle przechowywane w bazie danych, aktualizacja ról powinna odbywać się we wtyczce i tam w ramach aktywacji / dezaktywacji. Po prostu nie jest konieczne uruchamianie tego kodu w każdym procesie WordPress.
David
6

Ponieważ jest to pierwszy hit w Google dla tego pytania, uważam, że jest to właściwe miejsce na aktualizację:

Dla mnie nie udało mi się tego uruchomić edit_theme_options. Potem przeczytałem źródło wtyczki i odkryłem, że tak naprawdę jest manage_options. I zadziałało.

tl; dr:

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

działa dla mnie (w 2014 roku)

Sebastian Schmid
źródło
Świetne rzeczy, koleś ...
Abbas
Musiałem dodać jeszcze jedną linię dla WP> 4.0$role_object->add_cap('customize');
Alex
1

Kolejną świetną wtyczką jest User Role Editor (http://wordpress.org/extend/plugins/user-role-editor/). Jest podobny do posłów, ale o wiele bardziej podstawowy i prosty w użyciu. Ponadto programiści są zawsze w pobliżu, aby wysłuchać opinii i w razie potrzeby zaoferować pomoc.

Travis Pflanz
źródło
0

To jest stare, ale oto nowy sposób, w jaki możesz to osiągnąć:

add_filter( 'user_has_cap',
function( $caps ) {
    if ( ! empty( $caps['edit_pages'] ) )
        $caps['edit_theme_options'] = true;
    return $caps;
} );
Bryan Willis
źródło