Шорткоды никогда не должны включаться в темы. Период.

ThemeForest недавно обновил их Требования к представлению темы WordPress быть более строгими и более встраиваемыми в лучшие практики разработки тем WordPress.


Руководящие принципы требуют использования нескольких основных функций WordPress, стандартных хуков тем и запрета функций PHP (таких как base64 и fopen), которые действительно не должно быть места в теме WordPress начать с.

В основном, WordPress.org Политика обзора тем, дать или взять несколько вещей.

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

Допустимые шорткоды

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

  • кнопки
  • таблицы цен
  • контейнеры с изображениями
  • dropcaps
  • списки

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

Проблема с шорткодами в темах

Я не могу сказать лучше, чем Джастин Тэдлок уже имеет. Одна из наиболее заметных проблем заключается в том, что когда пользователь меняет темы, шорткоды больше не будут анализироваться.

Допустим, тема «Super Awesome» имеет функцию шорткода, которая выводит большую зеленую кнопку со ссылкой, когда вы печатаете что-то вроде

Большая зеленая кнопка [/ button].

Большая зеленая кнопка

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

Большая зеленая кнопка [/ button]

Это выглядит некрасиво, сбивает с толку и неуместно, и это боль для пользователя, чтобы вернуться и удалить / заменить все они.

Другая проблема с шорткодами в темах

То, о чем Тэдлок упомянул в своей статье «Борьба с безумным шорткодом», так это то, что многие шорткоды настолько просты и похожи на HTML, что может быть даже лучше поручить пользователям немного выписать (* gasp *) реальный код HTML.

Тот же [URL кнопки ="http://example.com"] Короткий код [Button button] в моем примере выше может быть легко переписывается как то так:

Текст кнопки здесь

Несмотря на то, что в новой теме CSS-код может не соответствовать стилю селектора .button, по крайней мере, появится обычная ссылка.. Что является большим улучшением поверх непарсированного шоккода

, отображаемого в содержимом сообщения.

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

Но пользователям все равно!

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

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

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

Правильный способ включить шорткоды

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

Это может быть даже в комплекте с чем-то вроде Активация плагина TGM чтобы сделать это требуется при активации темы. Или нет. тема по-прежнему тема без шорткодов.

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

Может быть, плагин мог бы ставить в очередь стили для коротких номеров. Таким образом, большие зеленые кнопки, которые вы включили в шорткод

, по-прежнему будут большими зелеными кнопками, независимо от используемой темы..

Почему ThemeForest разрешил «допустимые» шорткоды?

Трудно сказать, что именно послужило причиной этого решения. Джап Томсон, евангелист WordPress из Envato (родительской компании ThemeForest), сказал об этом в комментарии на WPMU.org:

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

Очевидно, он получает это. Так что это для меня загадка, почему будут какие-либо «допустимые» шорткоды совсем. И да, я понимаю, что он использовал слово «сложный» в приведенной выше цитате, и допустимые шорткоды, как правило, довольно простые (выпадающие, списки и т. Д.).

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

Вывод

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

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

– Тематическая лаборатория (@themelab) 9 июля 2013 г.

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

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

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map