Как я могу позволить Роль редактора изменить настройки темы?

22

Я только что установил новый блог для друга и подумал, что лучше не давать ему доступ администратора сразу же в качестве меры предосторожности.

Поэтому я создал нового пользователя в качестве редактора.

Но потом я увидел, что этот пользователь не может изменить настройки темы, такие как фон и заголовок.

Есть ли простой способ разрешить Роль редактора редактировать любые настройки темы в «Двадцать десять» или «Дитя»? Он должен иметь возможность делать все, что может делать администратор. Тема, возможно, даже смена темы.

hakre
источник
2
Напоминает мне ... Я написал плагин для этого: Варианты темы для редакторов
fuxia

Ответы:

21

Вы можете добавить возможности к роли редактора, используя объект роли и add_cap из вашего 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');
?>

Вы также можете удалить возможности:

$editor->remove_cap('delete_posts'); 

просто взгляните на список возможностей и что каждый из них означает.

Bainternet
источник
3
Круто, это сработало! Для коротышек: get_role('editor')->add_cap('edit_theme_options');:)
Хакре
1
@hakre FYI Прямые назначения переменных, подобные этому a()->b(), не будут работать в версиях PHP до 5.
hitautodestruct
Поскольку роли обычно хранятся в базе данных, обновление ролей должно выполняться в плагине и в хуке активации / деактивации. Просто нет необходимости запускать этот код в каждом процессе WordPress.
Дэвид
6

Поскольку это первый ответ на этот вопрос в Google, я считаю, что это подходящее место для обновления:

Для меня я не мог заставить его работать через edit_theme_options. Затем я прочитал источник плагина и выяснил, что это на самом деле manage_options. И это сработало.

ТЛ; др:

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

у меня работает (в 2014 году)

Себастьян Шмид
источник
Отличный материал чувак ...
Аббас
Нужно было добавить еще одну строку для WP> 4.0$role_object->add_cap('customize');
Alex
5

Разве им не нужна возможность "edit_themes"? Вы можете использовать плагин Justin Tadlocks http://wordpress.org/extend/plugins/members/ для редактирования возможностей, связанных с каждой ролью.

Крис
источник
1

Еще один замечательный плагин - редактор ролей пользователей (http://wordpress.org/extend/plugins/user-role-editor/). Он похож на членов, но гораздо более простой и простой в использовании. Кроме того, разработчики всегда готовы выслушать отзывы и предложить помощь, если это необходимо.

Трэвис Пфланц
источник
0

Это старый, но вот новый способ, которым вы могли бы достичь этого:

add_filter( 'user_has_cap',
function( $caps ) {
    if ( ! empty( $caps['edit_pages'] ) )
        $caps['edit_theme_options'] = true;
    return $caps;
} );
Брайан Уиллис
источник