В каникулы НГ2016 написал свой первый плагин для CMS WordPress (WP). Целью было познать как это делается. Функционал плагина: добавления тегов поста в <head> тело страницы записи (поста) в качестве ключевых слов (<meta name=»keywords» content=»теги, указанные, в посте» />). Вроде банально, но «из_коробки» этого нет, а в плагинах не нашёл.
Вообще в WP есть несколько способов добавления дополнительного функционала:
- написание/установка плагина
- добавление функции в файле функций используемой темы оформления
- добавление прямо в код темы, где надо
Обычно, я использую последний пункт, так как работаю с конкретными темами созданными под себя (а в этом блоге даже самим мной). Данный подход обеспечивает максимальную производительность, так как код запускается непосредственно там где надо. Изначально так и работало, но захотел познать написание плагинов.
Подход с добавлением в файл функции темы позволяет упорядочить доп.функционал, храня его в одном месте. В нашем случае, необходимо использовать хук перехватывающий вывод <head> (wp_head) и добавлять туда вывод нужного кода. Минус — хук чуть медленнее работает, чем вывод прямо в коде.
Плагин, по сути, работает так же, как и предыдущий способ, но функционал уже не привязан к теме, что есть плюс. Минус — ещё чуть большая нагрузка на движок. Плюс — больше кода. Значительно больше. Изначально код был в одну строчку. В плагине примерно 40 строк (не считая описания). Здесь и код для активации плагина, сама функция, страница настройки и т.д. Основная трудность — в первый раз не знаешь, что, где и куда.
Следующим «квестом» стала публикация плагина в официальном репозитории WordPress’а. Ведь плагин нужен не только для вынесения функционала из темы, но и для того, что бы поделится им с миром. Квест был пройден довольно быстро.
Сам плагин → https://wordpress.org/plugins/tags-to-meta-keywords/
Планы на будущие:
- по конкретному плагину — сделать нормальное описание и перевод
- по плагинам — «заплагинить» в WP html5-плеер от Ильи Бирмана. Думаю сделать ли подмену стандартному, или просто ссылку на файл превращать в плеер (как есть по умолчанию у автора)