Что использовать: плагин или сниппет? Инфографика

Многие сталкиваются с вопросом: использовать ли в WordPress плагин, или лучше найти решение без плагина, и прописать код в файле functions.php (который еще называется сниппет)? В разных ситуациях ответы на этот вопрос будут разными.

Основное правило – если ваша функция нужна для оформления контента, используйте сниппет. Если функция нужна для создания нового контента, и вы не хотите потерять функциональность после смены темы, то используйте плагин.

На официальном сайте WordPress в разделе для разработчиков приводится следующий список тех возможностей, которые следует выносить в плагины:

  • Скрипты статистики посещаемости
  • SEO-настроки
  • Кнопки типа “поделиться в соц. сетях”
  • Шорткоды для вывода контента
  • Пользовательские типы записей и пользовательские таксономии
  • Удаление или модификация функций ядра WordPress
  • Отключение админ-бара
  • Сжатие и кеширование

Причем этот список, как сказано в документации, далеко не полный. Поэтому, особенно новичкам, иногда бывает трудно определить, когда лучше использовать код в файле функций, а когда – плагин.

Хотелось бы сразу сказать, что распространенное мнение о том, что плагины тормозят работу сайта – это миф. Нагрузку на сайт создает криво написанный, неоптимизированный код, и не важно, где он расположен – в плагине или в теме.

Что лучше: код в functions.php или плагин?

Чтобы облегчить выбор, я создала инфографику, которая поможет определить, что лучше использовать для создания определенной функциональности в WordPress в конкретном случае: плагин или сниппет для functions.php

Плагин или сниппет? Что лучше использовать?
Что лучше использовать в WordPress: сниппет или плагин? Инфографика поможет определить, что лучше использовать для создания определенной функциональности в WordPress: плагин или код в файле functions.php

Разберем на примере. Я хочу сделать шорткод, который будет оформлять текст в рамочку, и делать заливку фона зеленым цветом. Вот так:

это образец действия шорткода
Моя тема сделана на Bootstrap, поэтому для того, чтобы сделать такое оформление, мне нужно дописать классы alert alert-success к div, в котором расположен текст. Идем по схеме:

  • функция связана с работой с контентом
  • ее основное применение – оформление контента
  • и функциональность связана с текущей темой оформления, так как без Bootstrap’а работать не будет
  • есть смысл использовать это не только в текущей теме
  • но на других сайтах я так делать не буду, потому что нужно будет создать дополнительные CSS-стили, которые по-умолчанию идут с бутстрапом

Поэтому я разместила свой код в файле функций.

Другой пример. Сейчас я публикую серию постов о создании темы. Для удобства читателей, я решила создать специальную таксономию, кроме рубрик и меток, и назвать ее Серии. Я это сделала при помощи вот этого генератора: http://generatewp.com/taxonomy/. Куда я должна положить этот код? Согласно схеме:

  • функция нужна для работы с контентом
  • она им управляет и создает новый контент, то есть создает Серии и позволяет назначить пост к серии
  • и после смены темы я бы не хотела потерять серии постов

Поэтому этот код я оформила как плагин. Но как сделать плагин из кода для файла functions? Читайте об этом далее.

Как превратить сниппет в плагин?

Допустим, вы нашли интересный код, который хотели разместить в файле functions.php, но после прочтения этого поста передумали, и решили воспользоваться плагином. Вам совсем не обязательно искать плагин с таким же функционалом, как и сниппет. Ведь его можно легко преврарить в плагин!

Чтобы сделать такой плагин, потребуется:

  • создать в папке /plugins/ новую подпапку, и назвать ее английскими буквами без пробелов и заглавных букв
  • в этой папке создать новый пустой файл, и тоже назвать его английскими буквами без пробелов и заглавных

Теперь в файл, который вы только что создали, нужно вставить такой код:

Сохраняем файл. После этого уже можно зайти в Консоли WordPress в плагины, и найти там ваш только что созданный плагин.

Далее, нам нужно вставить код функции (сниппета) в этот файл, ниже комментария в 12 строке. 12 строку, кстати, можно удалить. Покажу на примере.

Вот эта функция добавляет к посту css-класс has_thumb, если у поста есть миниатюра:

Она очень маленькая, поэтому на ее примере удобно научиться делать плагины. Давайте это сделаем:

Такой способ преобразования сниппетов в плагины будет работать в 99% случаев. Это очень удобно, так как управлять плагинами намного проще, чем вставками в файл functions.php. И, вопреки распространенному мнению, нагрузки на сайт от такого плагина не будет больше, чем от того же самого кода, вставленного в functions.

Если у вас есть какие-то вопросы, или вы не согласны с моим мнением, пишите в комментарии!