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

24 мар. 2011 г., 23:32:55
Просмотры: 29.3K
Голосов: 24

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

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

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

Есть ли простой способ разрешить роли Редактора изменять любые настройки темы в Twenty Ten или её дочерней теме? По сути, он должен иметь возможность делать всё, что может Администратор в отношении темы, возможно, даже менять темы.

1
Комментарии

Напоминает мне... Я написал плагин для этого: Настройки темы для редакторов

fuxia fuxia
14 сент. 2014 г. 17:22:49
Все ответы на вопрос 5
3
23

вы можете добавить возможности для роли редактора, используя объект роли и add_cap из вашего functions.php

<?php
   // получаем объект роли
   $editor = get_role('editor');
   // добавляем возможность $cap к этому объекту роли
   $editor->add_cap('edit_theme_options');
?>

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

$editor->remove_cap('delete_posts'); 

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

25 мар. 2011 г. 01:06:25
Комментарии

Круто, это сработало! Для краткости: get_role('editor')->add_cap('edit_theme_options'); :)

hakre hakre
25 мар. 2011 г. 02:55:28

@hakre К сведению: прямое присваивание переменных вроде a()->b() не будет работать в версиях PHP ниже 5.

hitautodestruct hitautodestruct
10 апр. 2013 г. 11:40:19

Поскольку роли обычно хранятся в базе данных, их обновление должно выполняться в плагине и внутри хуков активации/деактивации. Нет необходимости запускать этот код при каждом процессе WordPress.

David David
14 мар. 2016 г. 10:35:52
2

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

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

Кратко:

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

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

8 июл. 2014 г. 13:54:52
Комментарии

Отличные штуки, чувак...

Abbas Abbas
30 дек. 2015 г. 07:59:46

Нужно добавить еще одну строку для WP > 4.0 $role_object->add_cap('customize');

Alex Alex
6 мар. 2017 г. 05:33:22
0

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

25 мар. 2011 г. 01:03:00
0

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

12 апр. 2012 г. 08:19:53
0

Это устаревший способ, вот более современный вариант:

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