Como posso permitir que a função de editor altere as configurações de tema?

22

Acabei de configurar um novo blog para um amigo e achei melhor não dar a ele acesso de administrador imediatamente por precaução.

Criei um novo usuário como editor, portanto.

Mas então vi que esse usuário não pode alterar as configurações do tema, como plano de fundo e cabeçalho.

Existe uma maneira fácil de permitir que a função de editor edite qualquer configuração de tema no Twenty Ten ou em um filho dele? Ele deve basicamente fazer o que um administrador pode fazer. o tema, provavelmente até mudando de tema.

hakre
fonte
2
Lembra-me… Eu escrevi um plugin para isso: Opções de tema para editores
fuxia

Respostas:

21

você pode adicionar recursos à função de editor usando o objeto role e add_cap de suas funções.php

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

você também pode remover recursos:

$editor->remove_cap('delete_posts'); 

basta dar uma olhada na lista de recursos e no que cada um significa.

Bainternet
fonte
3
Legal, isso funcionou! Para os shorties: get_role('editor')->add_cap('edit_theme_options');:)
hakre 25/03
1
@hakre atribuições de variáveis FYI diretas como essa a()->b()não funcionará em versões do PHP anteriores a 5.
hitautodestruct
Como as funções geralmente são armazenadas no banco de dados, as funções de atualização devem ser feitas em um plug-in e dentro de um gancho de ativação / desativação. Simplesmente não é necessário executar esse código em todos os processos do WordPress.
David
6

Como este é o primeiro hit no google para esta pergunta, sinto que este é o lugar certo para uma atualização:

Para mim, não consegui fazê-lo funcionar edit_theme_options. Então eu li a fonte do plugin e descobri que é realmente manage_options. E funcionou.

tl; dr:

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

trabalha para mim (no ano de 2014)

Sebastian Schmid
fonte
Bom material caras ...
Abbas
Necessário adicionar mais uma linha para WP> 4.0$role_object->add_cap('customize');
Alex
1

Outro ótimo plugin é o User Role Editor (http://wordpress.org/extend/plugins/user-role-editor/). É semelhante aos Membros, mas muito mais básico e simples de usar. Além disso, os desenvolvedores estão sempre por perto para ouvir feedback e oferecer assistência, se necessário.

Travis Pflanz
fonte
0

Isso é antigo, mas aqui está uma maneira mais recente de conseguir isso:

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