Изменение допустимых тегов в редакторе WordPress

Во время разработки плагина необходимо было решить проблему подсветки любых, указанных пользователем фрагментов текста в редакторе wordpress.

В этот раз пришлось искать способ решения не только в ядре этой CMS, но и в настройках встроенного редактора tinymce.

При поиске возможностей нашел одну интересную настройку в tinymce — возможность добавлять любые (именно любые)  теги при загрузке текста в редактор и проверке валидности при сохранении. Нужно было лишь добавить в блок инициализации tinymce опцию extended_valid_elements со значением нужного мне тега.

Почему написал выше про то, что можно использовать абсолютно любой тег, это потому, что вариант с тегом <span class=…»></span> в моем случае не подошел. Плагин массовый и у некоторых владельцев возникала ситуация, когда были проблемы с пересечением других блоков.

Было принято решение для этой ситуации добавить отдельный тег только для подстветки. Вы так же можете для этих целей использовать любой произвольно созданный тег. Например <ffrree></ffrree>. Конечно, если данный код не будет отображаться на сайте. Как оценят такое новшество поисковики, сказатьт не могу. Мне нужно было только временно подсветить искомый в тексте фрагмент текста.

Осталось найти как можно не меняя код ядра добавить в инициализацию редактора нужный дополнительный параметр.

Анализируя код вывода редактора, нашел нужный мне фильтр «teeny_mce_before_init» и написал небольшой обработчик данного фильтра

add_filter('teeny_mce_before_init', 'f_teeny_mce_before_init', 10, 2);
function f_teeny_mce_before_init($mceInit, $editor_id){
	$mceInit['extended_valid_elements'] = 'ffrree[*]';
	return $mceInit;
}

Значение [*] говорит о том, что у тега могут быть какие-то параметры, которые тоже не нужно удалять.

Дальше осталось перед открытием редактора добавить в текст статьи эти самые теги, выделив нужные места текста и вывести редактор на страницу.

$content = preg_replace("/".$search."/ui",  '$0', $content);
wp_editor($content, 'str_1', array('textarea_name' => 'str_1', 'textarea_rows' => 4, 'teeny'=>1));

 
 
 

В итоге, в открывшемся редакторе наблюдаем то, что нужно

Результат при изменении настроек редактора WordPress

Таким простым способом можно вносить нужные изменения во встроенный редактор wordpress.

Если у Вас есть идея для плагина, которого еще не существует, или внести корректировки в существующий в соответствии с Вашими желаниями, обращайтесь:
email: tormyshev.valery@gmail.com
skype: valery_tormyshev
на сайте: контакты

Добавить комментарий

или войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *