Как разрешить авторам использовать тег iframe?
По умолчанию в WordPress использование нефильтрованного html-кода ('unfiltered_html') доступно только администраторам и редакторам сайта. У авторов, например, все запрещенные теги вроде iframe, script, input и др. из контента записей при их сохранении полностью вырезаются. Сделано это ради безопасности и в целом имеет смысл. Однако, если вы прекрасно знаете своих авторов и не боитесь, что они будут взламывать ваш сайт, то возможно вы захотите дать им возможность использовать нефильтрованный html-код. Потому что без него довольно проблематично вставлять, к примеру, видео с неподдерживаемых движком хостингов (rutube.ru и прочих). Самое простое решение проблемы - дать авторам роль редакторов. Но в этом случае вы рискуете тем, что новоявленные редакторы могут по ошибке что-нибудь удалить на вашем сайте. Поэтому лучшим выходом будет просто добавление возможности 'unfiltered_html' для авторов сайта. Для этого вам необходимо добавить в файл functions.php вашей темы следующий код:
//включение unfiltered_html для авторов start function wph_allow_unfiltered_html() { $role = get_role('author'); $role->add_cap('unfiltered_html'); } add_action('admin_init', 'wph_allow_unfiltered_html'); //включение unfiltered_html для авторов end |
Имейте ввиду, что удаление этого кода не отнимет у авторов возможности использования нефильтрованного html-кода, так как она будет сохранена в базе данных (для удаления используйте в данном коде remove_cap вместо add_cap).
Или можно разрешить авторам лишь один единственный тег iframe, для этого вам нужно будет использовать такой код:
//включение тега iframe для авторов start function wph_allow_iframe_tag($allowedposttags) { if( !current_user_can('author') ) return $allowedposttags; $allowedposttags['iframe'] = array( 'align' => true, 'width' => true, 'height' => true, 'frameborder' => true, 'name' => true, 'src' => true, 'id' => true, 'class' => true, 'style' => true, 'scrolling' => true, 'marginwidth' => true, 'marginheight' => true, ); return $allowedposttags; } add_filter('wp_kses_allowed_html', 'wph_allow_iframe_tag', 1, 1); //включение тега iframe для авторов end |
Другие теги разрешаются аналогичным способом (надо обязательно указать все возможные параметры для добавляемого тега).
Спасибо тебе, человек, все получилось
Огромное спасибо. Долго искал решение данной проблемы!