Так как одним из видов моей деятельности есть программирование/администрирование, опишу интересный случай, с которым пришлось столкнуться и успешно решить возникшую задачу.
Есть сайт на wordpress, которым неспешно занимаются несколько людей, под одним логином, редактируя/добавляя непересекающиеся страницы/записи. Работали все эти люди под одним логином, с максимальными правами.
Один из этих людей периодически правил страницу с онлайн-трансляциями мероприятий, посредством вставки кода видео с ютуба. Однажды бац — и оказалось что кто-то эту страницу удалил 🙁 Страница была восстановлена из корзины, но возникло желание прекратить этот коммунизм и разграничить права доступа авторов, не из вредности, а для предотвращения подобных, уверен — неумышленных ошибок.
О распределении ролей в вордпресс написано довольно много, повторять не буду. Как и о создании собственных ролей. В итоге я создал роль, имеющую права на редактирование своей страницы, назначил ее отдельному пользователю, которого поставил автором страницы.
Для этого в functions.php используемой темы был добавлен код типа:
$result = remove_role( ‘youtubpageeditor’);
$result = add_role( ‘youtubpageeditor’, ‘редактор страницы трансляции’,
array(
‘read’ => true, // true allows this capability
‘edit_pages’ => true, // Allows user to edit pages
‘edit_published_pages’ => true, // Allows user to edit pages
‘publish_pages’ => true,
);
Статьи «в интернетах» советуют сделать так чтобы этот код выполнялся единожды — например при активации плагина. Я не оформлял действие в плагин, поэтому после открытия страницы (код выполнился), закомментировал его. Роль создалась и осталась.
Всё вроде прекрасно, но! После первой редакции новым пользователем, код вставки видео с ютуба исчез! то есть блок <iframe>….</iframe>.
Притом при редактировании по старой технологии, суперпользователем — код оставался. Непорядок Тут уже гугление было не таким успешным. Вернее предлагались какие-то плагины и прочие костыли, но я чувствовал что это какая-то разница в правах (возможностях, Capabilities, если говорить в терминах wordpress), поскольку под одним пользователем всё работает, а под другим — нет.
Так оно и оказалось — есть «возможность» unfiltered_html, которая, согласно кодексу, включена по-умолчанию только у суперадмина, отсутствие которой не дает вставлять в редактор некоторые конструкции html, блок iframe, script в том числе.
Добавив в массив возможностей создаваемой роли строку ‘unfiltered_html’ => true, всё заработало как хотелось, без всяких доп. плагинов и прочих костылей.
Кодекс вордпресс надо читать и чтить, как и другие 🙂
Кстати если гуглить по unfiltered_html, то данный метод решения уже описан, как «в лоб», так и путем добавления опции к существующим правам. Оставлю здесь вариант, чтобы не забыть:
$admin_role = get_role( ‘administrator’ );
// grant the unfiltered_html capability
$admin_role->add_cap( ‘unfiltered_html’, true );