Flector

Как запретить редактору удалять атрибуты onmouseover и onmouseout?

Пример удаленных атрибутов у тега img

На вкладке "Текст" редактора, вы можете добавить какой угодно код, но при переключении на визуальный режим редактор удалит все неразрешенные атрибуты вроде onmouseover и onmouseout. Единственный способ сохранить их это не переключаться на вкладку "Визуально", что во многих случаях сделать практически невозможно. Однако, есть способ разрешить использование всех возможных атрибутов для выбранного тега. Скажем, можно научить редактор не удалять какие-либо атрибуты вроде onmouseover и onmouseout у тега img. Для этого вам необходимо добавить в файл functions.php вашей темы следующий код:

//разрешаем все элементы тега img start
function wph_add_all_elements($init) {
    if(current_user_can('unfiltered_html')) {
        $init['extended_valid_elements'] = 'img[*]';
    }
    return $init;
}
add_filter('tiny_mce_before_init', 'wph_add_all_elements', 20);
//разрешаем все элементы тега img end

Через запятую можно указать дополнительные теги (например, тег a):

//разрешаем все элементы тега img start
function wph_add_all_elements($init) {
    if(current_user_can('unfiltered_html')) {
        $init['extended_valid_elements'] = 'img[*],a[*]';
    }
    return $init;
}
add_filter('tiny_mce_before_init', 'wph_add_all_elements', 20);
//разрешаем все элементы тега img end

Но в любом случае использовать все дополнительные атрибуты сможет только пользователь, которому разрешено использовать нефильтрованный html-код (по умолчанию разрешено только администраторам и редакторам). Отключать проверку на 'unfiltered_html' я крайне не рекомендую во избежание проблем с безопасностью.


Комментарии (7 комментариев)
  1. ОГРОМНОЕ СПАСИБО АВТОРУ!!! Больше года мучился, на главной были размещены атрибуты onmouseover и onmouseout, приходилось все это время редактировать главную страницу только в текстовом редакторе. Как же это неудобно! Но теперь все работает и в визуальном редакторе, еще раз спасибо!

    У меня к автору вопрос. Подобная проблема с выводом спойлера. Вот код:

    Название спойлера

    Текст под спойлером
    плавно появляется
    и плавно исчезает
    при клике по спойлеру

    При переходе в визуальный редактор часть кода пропадает и спойлер некорректно отображается.

    Может вы знаете, что в данном случае можно сделать, чтобы при переходе в визуальный код не пропадал?

    • Flector:

      Может вы знаете, что в данном случае можно сделать, чтобы при переходе в визуальный код не пропадал?

      вы точный код то приведите (кнопочкой Код воспользуйтесь).

  2. Можете подсказать пожалуйста, я вставил код в function.php, добавил там тег onclick но код не работает, при переходе в визуальный редактор всё равно этот тег вырезается...может после обновлений плагина этот код уже не работает?

  3. Анатолий:

    Onclick не тег, а функция тега ссылки, например. Поэтому если в ссылке или в картинке onclick - код ниже как-раз и сработает.

    //разрешаем все элементы тега img start
    function wph_add_all_elements($init) {
    if(current_user_can('unfiltered_html')) {
    $init['extended_valid_elements'] = 'img[*],a[*]';
    }
    return $init;
    }
    add_filter('tiny_mce_before_init', 'wph_add_all_elements', 20);
    //разрешаем все элементы тега img end

  4. MS:

    Спасибо тебе, добрый человек!
    Единственное место в инете, где удалось найти действенный метод, как разрешить использование a href= onclick=

  5. Igor:

    Как сделать, чтобы редактор не вырезал

  6. Igor:
    1
    
    <meta itemprop="availability" content="http://schema.org/InStock">
Написать комментарий

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