Я бы начал с этого вопроса: связана ли эта функциональность с представлением контента или с генерацией / управлением контентом, или с сайтом, или с идентификацией пользователя?
Если функциональность не связана конкретно с представлением контента , то это прямо в пределах территории плагина. Этот список длинный:
- Модификация основных WP-фильтров (
wp_head
контента, такого как канонические ссылки, генератор и другие HTML-мета и т. Д.
- Сайт Фавикон
- Постконтентные шорткоды
- Опубликовать ссылки для обмена
- Сценарии нижнего колонтитула Google Analytics (и аналогичные)
- SEO инструменты / элементы управления
- и т.п.
Если функциональность связана с представлением контента , то он является кандидатом на включение в тему. На этом этапе я вернусь к критерию переключения тем в @ Raf912 : скучаете ли вы по функциональности при переключении тем? Если ответ на этот вопрос - нет , то функциональность принадлежит теме. Некоторые примеры:
- Удаление / переопределение ядра WP Галерея CSS
- Фильтрация длины выдержки из сообщения, текста "читать дальше" и т. Д.
- Все, что реализовано с помощью
add_theme_support()
(я полагаю, это должно быть очевидно)
- Пользовательские CSS
Как правило, эти два вопроса обеспечат довольно четкую линию дифференциации; Однако есть исключения.
Пользовательские типы сообщений
Например, пользовательские типы записей представляют собой уникальный гибрид генерации и представления контента, учитывая то, как иерархия шаблонов работает для страниц индекса архива с одним постом и страниц с одним постом . Аспект создания контента CPT обычно помещал бы их прямо в Территорию Плагина; тем не менее, плагины не могут определять шаблоны страниц, которые по своей природе вписываются в дизайн / макет / стиль для любой данной Темы (особенно, если CPT отображает не обычный заголовок / контент / мета, или связанные с ним пользовательские таксономии).
В долгосрочной перспективе, решение этого неравенства, IMHO, состоит в том, чтобы иметь стандартную конвенцию / консенсус для определения CPT для заданных типов контента (списки недвижимости, события календаря, продукты электронной коммерции, записи книг / медиатек и т. Д. .). Таким образом, сгенерированный пользователем контент останется переносимым между Темами, которые реализуют стандартное / условное определение данного CPT, в то время как разработчики Тем сохраняют гибкость в определении дизайна / макета / стиля этого CPT в файлах шаблонов Тем.
Ссылки на социальные сети
Точно так же я бы обычно говорил, что ссылки на профили в социальных сетях, которые стали почти повсеместными в современных темах, являются территорией плагинов, потому что они не имеют никакого отношения к представлению контента. Лучшим решением было бы определить эти профили где-то в ядре; однако в настоящее время нет стандартных / согласованных способов определения этих ссылок. Они лучше всего определены на уровне настройки сайта или для каждого пользователя? Если для каждого пользователя мета какого пользователя отображается в шаблоне? и т.п.
Итак, опять же, в долгосрочной перспективе, решение этого несоответствия заключается в том, чтобы либо ядро могло определить, где эти ссылки определены, либо сообщество разработчиков тем могло бы выработать собственный консенсус. Между тем, на самом деле ничего нет, кроме как держать их определенными в каждой теме.