Cum pot permite Rolului de Editor să modifice Setările Temei?

24 mar. 2011, 23:32:55
Vizualizări: 29.3K
Voturi: 24

Tocmai am configurat un nou Blog pentru un prieten și am considerat că e mai bine să nu-i ofer acces de Administrator din start, ca măsură de precauție.

Așadar, am creat un nou utilizator cu rol de Editor.

Dar apoi am observat că acest utilizator nu poate modifica Setările Temei, cum ar fi Fundalul și Antetul.

Există o modalitate simplă de a permite rolului de Editor să editeze orice setări ale temei în Twenty Ten sau într-o temă copil? Practic, ar trebui să poată face tot ce poate face un Administrator în ceea ce privește tema, probabil chiar și schimbarea temelor.

1
Comentarii

Îmi amintește... Am scris un plugin pentru asta: Opțiuni de temă pentru editori

fuxia fuxia
14 sept. 2014 17:22:49
Toate răspunsurile la întrebare 5
3
23

poți adăuga capacități rolului de editor folosind obiectul de rol și add_cap din functions.php

<?php
   // obține obiectul rolului
   $editor = get_role('editor');
   // adaugă capacitatea $cap acestui obiect rol
   $editor->add_cap('edit_theme_options');
?>

de asemenea, poți elimina capacități:

$editor->remove_cap('delete_posts');

consultă lista de capacități și semnificația fiecăreia.

25 mar. 2011 01:06:25
Comentarii

Super, a funcționat! Pentru cei scurti la minte: get_role('editor')->add_cap('edit_theme_options'); :)

hakre hakre
25 mar. 2011 02:55:28

@hakre FYI Atribuirile directe de variabile ca a()->b() nu vor funcționa în versiunile PHP anterioare versiunii 5.

hitautodestruct hitautodestruct
10 apr. 2013 11:40:19

Deoarece rolurile sunt de obicei stocate în baza de date, actualizarea rolurilor ar trebui făcută într-un plugin și acolo într-un hook de activare/dezactivare. Pur și simplu nu este necesar să rulezi acest cod în fiecare proces WordPress.

David David
14 mar. 2016 10:35:52
2

Deoarece acesta este primul rezultat pe Google pentru această întrebare, cred că este locul potrivit pentru o actualizare:

Pentru mine, nu am reușit să funcționeze folosind edit_theme_options. Apoi am citit codul sursă al plugin-ului și am descoperit că de fapt este nevoie de manage_options. Și a funcționat.

tl;dr:

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

funcționează pentru mine (în anul 2014)

8 iul. 2014 13:54:52
Comentarii

Super lucruri, omule...

Abbas Abbas
30 dec. 2015 07:59:46

Era necesar să adaugi încă o linie pentru WP > 4.0 $role_object->add_cap('customize');

Alex Alex
6 mar. 2017 05:33:22
0

Nu au nevoie de capabilitatea "edit_themes"? Poți folosi plugin-ul lui Justin Tadlock http://wordpress.org/extend/plugins/members/ pentru a edita capabilitățile asociate fiecărui rol.

25 mar. 2011 01:03:00
0

Un alt plugin excelent este User Role Editor (http://wordpress.org/extend/plugins/user-role-editor/). Este similar cu Members, dar mult mai simplu și mai ușor de utilizat. În plus, dezvoltatorii sunt mereu disponibili pentru a asculta feedback-ul și pentru a oferi asistență, dacă este necesar.

12 apr. 2012 08:19:53
0

Acesta este un mod vechi, dar iată o metodă mai nouă pe care ai putea să o folosești:

add_filter( 'user_has_cap',
function( $caps ) {
    if ( ! empty( $caps['edit_pages'] ) )
        $caps['edit_theme_options'] = true;
    return $caps;
} );
14 mar. 2016 06:28:13