Flector

Как разрешить авторам использовать тег 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

Другие теги разрешаются аналогичным способом (надо обязательно указать все возможные параметры для добавляемого тега).


Комментарии (2 комментария)
  1. Спасибо тебе, человек, все получилось

  2. Огромное спасибо. Долго искал решение данной проблемы!

Написать комментарий

Для вставки кода воспользуйтесь кнопкой "Код". Используйте предпросмотр!