Вопрос или проблема
Я создаю пользовательскую роль с помощью кода ниже в functions.php, однако WordPress позволяет пользователю только создавать черновики страниц, они не могут редактировать черновики или публиковать страницы, несмотря на то, что я установил права на «истинно»?
Любая помощь будет очень ценна! Заранее спасибо.
add_action('admin_init', 'user_custom_roles');
function user_custom_roles() {
add_role(
'editor_limited',
'Ограниченный Редактор',
array(
'read' => true,
'edit_pages' => true,
'edit_posts' => true,
'edit_published_pages' => true,
'edit_published_posts' => true,
'edit_others_pages' => true,
'edit_others_posts' => true,
'publish_pages' => true,
'publish_posts' => true,
'upload_files' => true,
'unfiltered_html' => true
)
);
}
Просто добавьте код ниже в вашу текущую активную тему. Удалите add_action & функции. Просто вставьте код ниже
$result = add_role( 'client', __(
'Клиент' ),
array(
'read' => true,
'edit_pages' => true,
'edit_posts' => true,
'edit_published_pages' => true,
'edit_published_posts' => true,
'edit_others_pages' => true,
'edit_others_posts' => true,
'publish_pages' => true,
'publish_posts' => true,
'upload_files' => true,
'unfiltered_html' => true
)
);
Хотя хорошо знать, как редактировать код, чтобы получить желаемый результат, я предпочитаю использовать плагины для выполнения этой работы, где это возможно. Это защищает решение от будущих изменений, перекладывая ответственность по обновлениям WordPress на автора плагина, а не на вас или вашего клиента. Итак, вы рассматривали плагин https://en-gb.wordpress.org/plugins/user-role-editor/? Это должно быть легко настраиваемо для выполнения ваших требований.
Я решил проблему. Проблема заключалась в том, что пользовательские возможности остались в кэше. Когда я изменил возможности, это не дало эффекта. Поэтому мне пришлось использовать команду remove_role(“editor_limited”), чтобы удалить пользовательскую роль, а затем добавить её обратно.
Ответ или решение
Проблема с правами на редактирование и публикацию страниц для пользовательской роли в WordPress
Создание пользовательских ролей в WordPress — это распространённая задача для администраторов, которым необходимо настроить доступ в зависимости от специфики работы их команды. Однако, как вы уже заметили, иногда могут возникнуть проблемы с правами, которые нарушают ожидаемое поведение системы.
Описание Проблемы
Вы столкнулись с тем, что созданная вами пользовательская роль editor_limited
может создавать черновики, но не имеет возможности редактировать или публиковать страницы. Вы уже задали необходимые способности при создании роли, но они не работают должным образом.
Анализ Кода
Ваш код в файле functions.php
выглядит следующим образом:
add_action('admin_init', 'user_custom_roles');
function user_custom_roles() {
add_role(
'editor_limited',
'Editor Limited',
array(
'read' => true,
'edit_pages' => true,
'edit_posts' => true,
'edit_published_pages' => true,
'edit_published_posts' => true,
'edit_others_pages' => true,
'edit_others_posts' => true,
'publish_pages' => true,
'publish_posts' => true,
'upload_files' => true,
'unfiltered_html' => true
)
);
}
На первый взгляд, определения способностей для роли editor_limited
выглядят корректно. Тем не менее, есть несколько нюансов, которые могут повлиять на функциональность.
Возможные Причины Проблемы
-
Кэширование Прав Доступа:
WordPress иногда использует кэширование для прав доступа. Если вы изменили права доступа для существующей роли, изменения могут не вступить в силу до тех пор, пока вы не очистите кэш или не перезагрузите вордпресс. Как вы уже заметили, удаление роли с помощьюremove_role("editor_limited")
и последующее её добавление обратно может решить проблему. -
Конфликтующие Плагины:
Некоторые плагины могут конфликтовать с вашими настройками ролей и прав доступа. Проверьте, нет ли действующих плагинов, которые могут влиять на управление правами пользователя, например, плагины для настройки пользовательских ролей. -
Настройки Темы:
Некоторые темы могут также управлять разрешениями для ролей пользователей. Убедитесь, что ваша тема не накладывает никаких дополнительных ограничений. -
Системные Ошибки:
Ошибки в коде или устаревшие функции могут повлиять на работу вашего сайта. Попробуйте включить режим отладки в WordPress, чтобы выявить возможные ошибки.
Рекомендуемые Решения
-
Удалите и Добавьте Роль Обратно:
Как вы уже сделали, используйтеremove_role()
для удаления роли, а затем используйтеadd_role()
для её восстановления. Это поможет убедиться, что все изменения активируются должным образом. -
Используйте Плагины:
Рассмотрите возможность использования плагина, такого как User Role Editor. Это поможет вам управлять ролями и правами доступа более интуитивно, не прибегая к редактированию кода. -
Очистите Кэш:
Если ваш сайт использует плагины кэширования, очистите кэш, чтобы изменения вступили в силу. -
Отладка:
Включите отладку в WordPress, добавив следующую строку в файлwp-config.php
:define('WP_DEBUG', true);
Это позволит вам видеть ошибки и предупреждения, которые могут помочь в диагностике проблемы.
Заключение
Создание и управление пользовательскими ролями в WordPress — это мощный инструмент, но он требует внимательности к деталям. Если вы следуете всем вышеперечисленным шагам, это может решить большинство проблем, связанных с разрешениями. Не забывайте также учитывать возможности сторонних плагинов, которые могут значительно упростить процесс настройки ролей и прав доступа.