Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress

Понятие "Территория плагина" в WordPress

by
Difficulty:IntermediateLength:ShortLanguages:

Russian (Pусский) translation by Ola Matona (you can also view the original English article)

Представьте, что кто-то запускает сайт магазина на модной WordPress теме, работает с этой темой месяцами, а потом хочет её поменять. А теперь представьте, что все слайдеры, виджеты, и даже продукты, которые были в старой теме, не выводятся в новой.  И представьте теперь испытываемое разочарование. Хотели бы вы быть его причиной?

Есть такое понятие, как "территория плагина", которое определяет, что должно быть вынесено из темы ее разработчиками. В этой статье я дам базовое объяснение этого понятия. 

Введение в территорию плагина

Начнем с простого: в основе понятия "территория плагина" лежит идея вынесения из темы всего, что может помешать пользователю сменить тему. Это означает, что вашу тему можно будет сменить на новую, если вы перестали ее развивать, или пользователю нужно (или хочется) ее поменять. Помните, что WordPress тема это скорее то, как она выглядит, нежели то, как она работает.

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

Почему?  Потому что пользователи вашей темы не смогут ее поменять, не потеряв свои записи, слайдеры, шорткоды, настройки SEO и другие настройки. Пользователи будут расстроены: им придется делать новый сайт с нуля, выбросив вашу тему, или они будут вынуждены смириться и продолжить использовать вашу тему.

В блоге про создание WordPress есть страница, которая посвящена понятию "территории плагина". Она буквально в нескольких словах затрагивает основные моменты, но я думаю, мы можем остановиться на этой теме поподробнее, описав позицию WordPress сообщества и профессиональную этику при разработке тем.

Что надо вынести из темы

Имея представление о понятии "территории плагина", мы можем перейти к его применению на практике. Некоторые формулировки могут вам показаться неполными, противоречащими или даже неправильными. В этом случае вы можете внести свой вклад в эту часть статьи, рассказав в комментариях о том, как вы применяете понятие "территории плагина".

Приступим!

Модификация и дублирование движка

Тут голову ломать не надо. Ваша тема не должна изменять или повторять базовую функциональность движка. Это значит, что не стоит злоупотреблять возможностями WordPress, ограничивая его функциональность, а также стоит воздерживаться от создания новых функций, которые делают то же самое, что и базовые функции движка.

Возьмем каналы подписки, например. Вы хотите сделать тему для журнала, в которой издатели смогут брать с читателей плату за контент. У WordPress уже есть функционал для RSS-канала, и может показаться, что его можно отключить в вашей теме, вот только это очень плохая идея.

Во-первых, почему вы считаете, что пользователи вашей темы захотят вообще отключить RSS-каналы? Во-вторых, есть много плагинов, которые могут это сделать, и, значит, вы можете рекомендовать эти плагины и позволить пользователям принять это решение самостоятельно. (Вот мое руководство, где я описываю как рекомендовать или даже требовать установку плагинов: "Использование в ваших темах библиотеки для активация плагинов TGM".)

Еще одним примером может служить разделение на части до и после <!--more--> тега. Не надо использовать функцию explode() для разделения на две части, так как в ядре движка уже есть функция get_extended(), которая вполне неплохо справляется с этой задачей. (У меня есть еще 7 полезных советов в этом руководстве, если вам интересно.) Поэтому стоит проверить базовую функциональность, перед тем как писать свою, и время сохраните и мудро поступите.

Шорткоды, слайдеры и виджеты

Когда говорят, что некоторые элементы дизайна также попадают на территорию плагинов, некоторые разработчики тем могут озадачиться. И в этом они правы, как может слайдер быть на территории плагина, если он является одной из самой важной составляющих типового корпоративного сайта.

А вот как: если пользователь решит отказаться от вашей темы, то им придется отказаться и от слайдера. Как я писал в начале этой статьи, это вызовет разочарование. То же и с шорткодами и виджетами. Никто не должен отказываться от буквиц, виджетов для социальных медиа или твиттер каналов при смене темы. Все они должны быть сделаны как плагины, чтобы ваши пользователи не создавали новые слайдеры с нуля или не вычищали старые, неработающий куски шорткодов из своего контента.

Пользовательские типы записей, таксономии и метабоксы

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

То же относится и к пользовательским таксономиям и метабоксам. Нельзя "портить" контент пользователей, если они захотят сменить тему, так что пользовательские таксономии должны быть также выполнены как плагины. Пользовательские метабоксы - это немного другое. Если они изменяют то, как контент выглядит (например, селекторы для изменения стиля записи), то это функциональность темы, но если метабоксы изменяют содержимое записи (например, таблица для обзора фильма), то они должны быть сделаны в виде плагина.

Настройки SEO и аналитики

Не буду тратить ваше время повторяя одно и то же: нельзя портить рейтинги поисковой оптимизации ваших пользователей, если они решат сменить вашу тему. Но вы всегда можете вынести этот функционал в отдельный плагин и рекомендовать его, используя библиотеку активации плагинов TGM.

Специализированные темы - отдельный случай

Где-то год назад я написал статью "Любопытная ситуация со специализированными темами" Позвольте, я процитирую себя:

WordPress тема должна разрабатываться с целью изменения внешнего вида сайта и не должна предлагать функциональность, которая уже встроена в WordPress движок. (...) Но есть проекты, в которых необходимо, чтобы и дизайн, и функциональность работали вместе. Такие проекты являются исключением, которое на рынке WordPress тем, зовется "специализированной темой".

У "специализированной темы" очень узкая конкретная направленность, например, сайт для сбора средств или системы управления обучением. С темой, на которой сделали подобный сайт, придется остаться на всю жизнь, хотя, конечно и ее можно развить, используя WordPress хук-хаки (действия и фильтры) или переделать при помощи дочерних тем. Поэтому для подобных тем нарушение территории плагина не является "плохой практикой".

Но тут не все однозначно: например, ThemeForest не разрешает нарушать территорию плагина даже в случае специализированных тем. Мне бы очень хотелось услышать и вашу точку зрения, давайте обсудим это в комментариях!

На сегодня все

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

Если интересно, то на рынке есть много WordPress плагинов, которые можно купить и использовать, а также изучить.

Уверен, что у вас есть, что сказать по этому вопросу, поэтому поделитесь вашими мыслями в комментариях ниже. И не забудьте поделиться статьей с друзьями, если она вам понравилась!

Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.