Разрешение пользователям редактировать только свою страницу, а не чужие

26 мар. 2012 г., 19:16:37
Просмотры: 16.7K
Голосов: 7

У нас сейчас около 50 страниц, и для каждой я хочу, чтобы пользователь (например, bob, rob, smith) мог редактировать только 1 страницу. Например, у bob и smith есть свои собственные страницы. Я не хочу, чтобы bob мог редактировать страницу smith. Я хочу, чтобы bob мог редактировать ТОЛЬКО страницу bob. Не важно, может ли он видеть другие страницы.

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

Есть ли плагины, которые помогут ограничить права редактирования для каждого пользователя, или роли, ограниченные редактированием определенных страниц, чтобы я мог просто добавить по одному пользователю на роль? Или, может быть, есть способ сделать это с настройками по умолчанию, который я пропустил?

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

Роль Contributor позволяет редактировать только свои записи. Или вы можете создать пользовательскую роль.

Brad Dalton Brad Dalton
23 окт. 2014 г. 16:20:45
Все ответы на вопрос 4
0

Вы можете добавить этот код в файл functions.php вашей темы, чтобы разрешить пользователю редактировать созданные им страницы и управлять медиафайлами. Просто укажите его $user_id (например, 27):

function add_theme_caps() {
    // добавление возможностей для $user_id
    $user = new WP_User( $user_id );
    $user->add_cap( 'edit_pages' );
    $user->add_cap( 'edit_published_pages' );
    $user->add_cap( 'upload_files' );
}
add_action( 'admin_init', 'add_theme_caps' );

Вы можете найти $user_id конкретного пользователя из URL, когда редактируете его в админке WordPress.

См. полный список возможностей пользователей WordPress.

Если вы хотите изменить встроенную роль contributor, чтобы все пользователи с этой ролью могли редактировать созданные ими страницы:

function add_theme_caps() {
    // добавление возможностей для роли `contributor`
    $role = get_role( 'contributor' );
    $role->add_cap( 'edit_pages' );
    $role->add_cap( 'edit_published_pages' );
    $role->add_cap( 'upload_files' );
}
add_action( 'admin_init', 'add_theme_caps' );
15 дек. 2014 г. 00:48:40
0

Role Scope действительно мощный инструмент, но я считаю, что он избыточен для этого случая. Если вы назначите Бобу и Смиту роль Автора (одну из стандартных ролей), они смогут редактировать только свои собственные записи.

26 мар. 2012 г. 22:31:04
0

Плагин Role Scoper может это включить.

26 мар. 2012 г. 19:27:17
0

Вы также можете просто отредактировать таблицу WP напрямую. Казалось, что phpAdmin будет более быстрым вариантом.

Таблица называется

wp_usermeta

Найдите user_id, измените значение для

wp_capabilities

и установите его примерно так

a:4:{s:11:"contributor";b:1;b:1;s:10:"edit_pages";b:1;s:20:"edit_published_pages";b:1;s:12:"upload_files";b:1;}

Я нашел http://www.unserialize.me/ полезным для проверки правильности сериализации (и предполагаю, что есть и другие подобные сайты)

23 дек. 2016 г. 02:31:40