Во время разработки плагина необходимо было решить проблему подсветки любых, указанных пользователем фрагментов текста в редакторе 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.
Если у Вас есть идея для плагина, которого еще не существует, или внести корректировки в существующий в соответствии с Вашими желаниями, обращайтесь:
email: tormyshev.valery@gmail.com
skype: valery_tormyshev
на сайте: контакты