Дополнительные кнопки в редактор WordPress

Добавление кнопок в редактор WordPress

Дополнительные кнопки в редактор WordPress

Дополнительные кнопки в редактор WordPress

Многие, уверен, сталкивались с проблемой, когда вам не хватает возможностей стандартного редактора WordPress. Порой не хватает некоторых кнопок, которые могли бы автоматизировать процесс написания и корректировки поста перед публикацией.

В сети решил поискать информацию по добавлению кнопок в редактор WordPress. Есть решения, но они неполноценны по многим критериям. Поэтому решил свой вариант предложить.

Все рассмотренные решения обладают недостатками. Вот парочка из них.

  1. Изменения лишь на уровне клиента. Кнопки новые действительно появляются в редакторе, но диапазон тегов ограничен. Точнее он ограничен количеством тегов html. То есть, если вы хотите вставить тэг заголовка <h3>, то он в таком виде в редакторе и вставится. А хотелось бы возможности реализовать свои коды (по типу bb-кодов). Для этого уже необходима работа с php файлами.
  2. Если я натыкался на статьи, где рассмотрена работа с php, то всё на уровне хаков, то есть дописыванием своего кода в движок. Сразу видно минусы. При том же обновлении движка блога, файлы движка перетираются, и ваш код будет утерян. Вы конечно можете снова его туда вставить, но это нерационально.

Вторую проблему решил тем, что реализовал свой вариант в виде плагина. Первая же решается тем, что мы добавляем свой фильтр в WP.

Создание плагина

Решение в виде плагина удобно тем, что включение/выключение кнопок реализуется в админке WP. В случае же обновления движка, нам ничего нового дописывать не надо будет. Теперь по порядку.

  1. Создаём папку в директории plugins, назовём её wp-quick-tags.
  2. Создаём в ней php файл, например wp-quick-tags.php.
  3. Создаём в директории wp-quick-tags папки js и css.
  4. В папке js создаём файл wp-admin-quick-tags.js.
  5. В папке css создаём файл wp-quick-tags.css.

Работа с js

Открываем wp-admin-quick-tags.js. Теперь определимся с кнопкой. Мне лично нужна была кнопка, которая вставляет код (html например). Если вы просто вставите html код, то он интерпретируется при выводе. Чтобы вывести html в виде текста (в том виде, в котором вы ввели), необходимо заменить заменить HTML сущности на спецсимволы (например: < на &#60;). Можно и ручками делать, но это не рационально…да и не красиво. Рассмотрим два варианта реализации нашей задачи: метод описанный в большинстве статей в сети (с использованием лишь js) и наш вариант. Добавляем кнопки в редактор:

ed_encoder_now — кнопка для варианта описанного в сети. ed_encoder — наша кнопка. Внимание: запомните название html_encoded, оно нам понадобится в php файле. Регистрируем обработчики для кнопок: Обработчик для кнопки на чистом js: Что делает обработчик? При выделении текста и нажатии на кнопку HTML Encoder Now все спец. символы заменяются и вы увидите в редакторе что-то типо &#60;h3 &#62; &#60; &#47;h3 &#62; (исходный текст был <h3></h3>). Согласитесь, не очень смотрится. Поэтому мы и создаём свой тэг. Обработчик нашей кнопки: Что делает обработчик? При выделении текста и нажатии на кнопку HTML Encoder текст заключается в тэг, вы увидите в редакторе [html_encoded]<h3></h3>[/html_encoded].

Работа с php

Теперь поработаем с php файлом. Вначале необходимо служебную информацию записать (она в админке будет отображаться). Затем необходимо зарегистрировать наш плагин: Часть кода у нас в js, так что необходимо включить соответствующий файл в заголовок. Чтобы работали наши стили, нужно их подключить: Здесь же подключаем файлы js, если необходимо. Добавляем обработчик нашего тэга и регистрируем его. Тот самый html_encoded, который был в js. При выводе поста [html_encoded][/html_encoded] преобразуется и мы увидим <h3></h3>. Вот собственно и всё, теперь необходимо в админке на странице плагинов подключить нашей новоиспечённый, и вы увидите в редакторе две новых кнопки.