На этой неделе встреча команды обзора тем WordPress.org открылась с дискуссии Чипа Беннетта о «серых зонах» разграничения представления и функциональности в темах. Активная дискуссия коснулась того, что допустимо с точки зрения «создания контента» для тем, расположенных в официальной директории.
Мы знаем, что произвольные типы записей и произвольные таксономии запрещены; то же самое касается и произвольных метаданных записей, не связанных с представлением», отметил Беннетт. «Однако как быть с контентом, создаваемым через опции темы, произвольные виджеты и т.д.?»
Этот вопрос часто поднимается применительно к темам, которые предлагают статичную главную страницу с произвольными виджетами или текстовыми областями в кастомайзере, куда пользователи могут добавлять небольшие блоки текста. К примеру, тема может предлагать раздел с биографией или место для текста авторского права. Проблема в том, что пользователь вводит контент, не зная о том, что этот контент будет утрачен при переключении на другую тему.
Команда обзора тем WordPress в течение многих лет ориентировалась на существующую политику, согласно которой авторам тем было запрещено задавать генерацию пользовательского контента. Однако, вследствие некоторой дезорганизации при переносе официальных требований к темам из кодекса в руководство по обзору тем, эта отдельная инструкция пропала.
Беннетт на днях опубликовал обзор требований к темам и соответствующую документацию в блоге Make/Themes с ранее опущенными пунктами, выделенными красным цветом для ясности.
Представление vs функциональность
Поскольку цель тем состоит в том, чтобы определить представление пользовательского контента, темы не должны использоваться для генерации пользовательского контента, либо для определения опций сайта или функциональности.
Поскольку это утверждение является достаточно общим, команда обзора тем решила обсудить тонкости того, как оно будет рассматриваться, на следующей встрече. В прошлом эта инструкция рассматривалась очень субъективно и применялась непоследовательно, вследствие чего многие темы смогли попасть в каталог с функциональностью, попадающей в такие «серые зоны».
Команда обзора тем решила жестко придерживаться инструкции «никакого создания контента»
Zerif Lite, одна из популярных тем на WordPress.org, была выделена во время встречи как пример темы, которой разрешили обойти это требование.
«Взгляните на Zerif Lite: рекомендации, наша команда, наши цели, о нас – все это представляет собой произвольные типы записей, замаскированные под произвольные виджеты», говорит Беннетт. В тикете, который посвящен обновлению темы, Беннетт посоветовал автору Zerif Lite удалить все произвольные метаданные записей, за исключением тех, которые не связаны с представлением, поскольку они занимают территорию плагинов. К «неугодным» аспектам темы относятся информация об авторе, должность участника команды, профили в социальных сетях и т.д.
Рецензенты уже агрессивно расправляются с нарушениями Zerif Lite этой инструкции, и, скорее всего, будут тщательно следить за выполнением этого требования всеми темами, подаваемыми на обзор.
Codeinwp, компания, стоящая за Zerif Lite, ответила на тикет Беннетта:
«К большинству вещей, на которые вы указываете, нужно подходить очень ответственно по двум причинам:
Примерно 50% всех популярных тем используют некоторый произвольный контент на главной странице
Большинство вещей, как, к примеру, рекомендации, нельзя устранить без поломки 100 тысяч сайтов, использующих тему»
Codeinwp утверждают, что подход, используемый в Zerif Lite, является гораздо более удобным для пользователей, нежели необходимость установки плагинов, чтобы добавить небольшие участки текста к главной странице:
«Я соглашусь, что наш подход был несколько отличающимся/радикальным. Однако похоже на то, что он понравился многим пользователям (Zerif – одна из самых популярных тем в данный момент с активными упоминаниями в сети). Я считаю, что большинство пользователей хотят создать привлекательный сайт за 10 минут, не имея каких-то специальных знаний или навыков, и с помощью Zerif Lite они легко могут это сделать. Им не нужны 10 произвольных типов записей, 10 обязательных плагинов, контактная форма и Captcha-плагины для простого сайта»
Автор темы считает, что создание плагина, чтобы обработать четыре виджета темы, привело бы к пустой трате пользовательского времени.
«Кроме того, вы представляете себе вообще объем работ, который нужно сделать для 100+ тем, установленных на миллионе сайтов?», указывают Codeinwp. Автор также приводит несколько других тем, которые нарушают это требование: AccessPress Parallax, Onetone и Colorway.
Учитывая, что каталог тем WordPress.org пронизан нарушениями уже давно существующей инструкции, говорит о том, что рецензенты очень слабо проверяли ее. Авторы тем, которые не были проинформированы о данной инструкции, должны будут обязательно обновить свои решения. Беннетт отметил в тикете, открытом к Zerif Lite, что политика команды в будущем станет более строгой:
«Не так давно это привлекло наше внимание – некоторые темы были добавлены в хранилище, но при этом они имели подобные проблемы. Мы будем исправлять их по мере нахождения; также мы будем продумывать совместно с разработчиками пути возвращения под эгиду требований – что мы сейчас и пытаемся сделать с вашей темой».
Это означает, что авторам тем придется провести огромную работу, если в их темах имелись способы генерации контента. Авторам понадобится вынести такой функционал в плагины.
Темы WordPress.org не могут иметь плагины в наборе, однако авторы могут рекомендовать плагины с помощью TGM Plugin Activation Library или при помощи других методов. Рекомендовать можно только плагины, находящиеся в официальном каталоге плагинов WordPress.org. Это означает, что авторам, которые удалят функциональность из тем в плагины, нужно будет добавить эти плагины на WordPress.org перед тем, как присылать тему на обновление.
Команда обзора тем на следующей неделе обсудит определенные примеры типов контента, которые можно и нельзя создавать в темах – текст кнопок, текст авторского права и т.д. Команда обычно ратует за использование базовых методов для создания контента.
Документация относительно этого вопроса была неясной, неполной, рассеянной по кодексу, блогу Make/Themes, а также двум разным участкам руководства по темам. Команда работает над тем, чтобы исправить эту ситуацию в свете возрожденной приверженности правилу «никакого создания контента».
Это повлияет на многие темы, расположенные на WordPress.org. Авторам этих тем придется реализовать изменения, которые, скорее всего, повредят тысячи сайтов при обновлении. Без журнала изменений многие пользователи просто окажутся в непонятной ситуации, когда они получат обновление, которое внезапно потребует установки новых плагинов.
Единые стандарты — это круто, конечно, как и отделение сожержимого от представления. Почему бы не ввести какой-то стандарт для разумного использования контента в темах: специально оговоренные названия переменных для блока копирайта, для блока с контактными данными, может для каких-то блоков на главной, — чтоб все создатели тем использвали только их. Тогда б контент не терялся при переключении тем, а пользователям было бы по-прежнему легко быстро рахвернуть сайт
Вполне разумное решение. Но тогда надо было бы установить этот «обязательный минимум». Под что вообще создавать переменные? Как-то проанализировать темы и выяснить, что чаще всего используется? Как вообще вычленить то, что является часто используемым? Вот эти вопросы тоже неизбежно могут возникнуть. К тому же, если задавать это в константы, будет подразумеваться, что все темы должны иметь эти блоки, чтобы не потерять контент, заданный в блоках в других темах. Вот поэтому такой контент, создаваемый в темах, и не поддерживается.
Не обязательно во все. Точно так же, как есть функция добавления сайдбара или функция для генерации дополнительных размеров картинок. Но это не значит, что надо обязательно их вставлять во все шаблоны. Точно так же можно задокументировать какой-нибудь набор констант для подключения дополнительных блоков контента. Думаю, самые часто используемые — копирайт, блок контактов, несколько блоков для главной. Может быть какие-то еще. Понятно, что это только вариант решения проблемы с контентом. Или можно забабахать плагин, который будет предоставлять возможность для быстрого создания таких блоков. И чтоб все авторы тем рекомендовали этот плагин к установке со своими темами))
Вот в случае с плагином это да — наиболее действенный и эффективный вариант.