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

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


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

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