Шорткоды с атрибутами в wordpress. Создание шорткодов в WordPress CMS. #1.2. Установка белого списка атрибутов шорткода

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

Как файл? Быстрый ответ

Специально для тех, кто и так все знает, а просто ищет быстрый ответ, или на другой движок, то вот, пожалуйста, используйте этот код:

php echo do shortcode wordpress

Однако не забывайте про пунктуацию! Кавычки в вашем шорткоде и в php коде должны быть разными.

Т.е., если в вашем шаблоне сайта на wordpress, вы используете такой же шорткод, но с двумя кавычками внутри ([«…»]), и в вашем php-коде вы также используете двойные кавычки («[…]»), то нужно одни из них поменять на одинарные. Именно из-за таких мелких причин часто не работают шорткоды в wordpress . Подробнее об этом ниже.

Что такое шорткод (shortcode), и для чего он нужен?

Shortcode – это от англ. «короткий код». Используется он, в основном, при создании плагинов или модулей, предназначенных для работы с системами управления контентом (CMS), например, WordPress, Joomla и др. Проще говоря, этот короткий код является неким ярлыком, который, при добавлении на сайт, подтягивает за собой весь большой код из плагина.

Выглядит шорткод обычно так: или так или даже просто в одно слово

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

Как это работает?

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

а всего лишь вот такой короткий код (Shortcode) в одну строку:

Вставив подобный этому

шорткод на страницу сайта на wordpress или в виджет, ваш плагин начнет работать и будет генерировать верхний большой код слайдера, в результате чего, вы получите ваш слайдер на страницах сайта.

А как вставить шорткод слайдера прямо в шаблон wordpress в php-код?

Если нужно непосредственно в код, для этого разработчики данного плагина написали рядом (рис. выше) функцию шорткода на языке php:

Такую «функцию» шорткода можно вставить в php-файл в нужное вам место на сайте. Например, в header.php, где-нибудь после body или, может быть, в sidebar.php, а лучше всего в файл шаблона страницы (он может называться как-нибудь так content-page.php), в результате, вы получите тот же слайдер, но уже встроенный в дизайн самого сайта.

Однако нужно быть очень внимательными при выводе шорткода в шаблоне wordpress в php-файлах. Для этого нужны хотя бы элементарные знания php. Поскольку, если его «не туда» вставить в php-файле, то на сайте будет выведена ошибка.

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

Как вывести шорткод в php в wordpress , если нет готовой php-функции в плагине?

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

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

shortcode wordpress как вставить

Его уже можно будет смело встраивать в любой шаблон сайта. Однако еще пока не спешите и прочитайте ниже про распространенные ошибки, которые допускают даже опытные вебмастера при добавление шорткодов.

Основные ошибки! Или почему не работает шорткод wordpress?

В начале статьи я уже описывала, как правильно добавить шорткод в wordpress, и как вставить шорткод в PHP . Давайте теперь все подытожим.

На самом деле, способов добавления существует два, а именно:

wordpress shortcode в шаблон

Как вы можете заметить, отличаются они между собой только кавычками — одинарными и двойными. Синтаксис языка php очень внимательно относиться к таким кавычкам. И если внутрь второй функции, которая с двумя кавычками, вы вставляете шорткод также с двумя кавычками, например, такой как у нас был:то вам будет выдана ошибка на сайте.

Для того, чтобы ошибок не было и ваш shortcode работал нормально, нужно чтобы были разные кавычки. Например, так:

Добавить любой из первых двух шорткодов в шаблон WordPress можно прямо в редакторе. Для этого найдите в редакторе сайта подходящий php-файл, который управляет «местом» на сайте, где вы хотите вывести ваш слайдер. Найти это место вы можете в инструментах разработчика прямо в вашем браузере, нажав сочетание клавиш Ctrl+Shift+I.

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

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

Как и со всеми функциями, добавление осуществляется в файл functions.php , в самый его конец, но перед закрывающим тегом ?> . Назовем функцию text_short . Внутри нее добавим нужный текст, который потом выведем вызовом.

Function text_short() { return "Любой нужный текст. который нужно выводить внутри текста Вашей записи."; }

Это еще не конец. Это просто функция и ее нужно еще превратить в шорткод. Для этого, сразу после нашей функции, нужно добавить функцию add_shortcode , в которой мы и создадим наш шорткод. Готовая строка будет иметь такой вид:

Add_shortcode("ts", "text_short");

Внутри функции add_shortcode, два названия. ts - это название шорткода, который будем вызывать. Название может быть любым, каким Вы его придумаете. text_short - это название функции, которую мы придумали для вывода текста. Готовый код целиком выглядит следующим образом:

Function text_short() { return "Любой нужный текст. который нужно выводить внутри текста Вашей записи."; } add_shortcode("ts", "text_short");

Шорткод создан, теперь нужно его вызвать для вывода. Когда будете писать текст записи просто добавьте вот такой вот вызов.

Вот так все просто.

  • Создаем функцию
  • Делаем ее шорткодом
  • Вызываем внутри записи
  • Function reklama() { return " (adsbygoogle = window.adsbygoogle || ).push({}); "; } add_shortcode("rek_sh", "reklama");

    И шорткод

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

    Создаем шорткод

    Function gb_bgrnd($attr,$content= null){ return" .redbg{ background-color: #f00; padding:3px 5px;} ".$content.""; } add_shortcode("gbb_sh", "gb_bgrnd");

    Данный шорткод будет выделять заключенный в него текст. Он будет иметь красный фон. Можете задать свои стили. Чтобы все работало, заключите нужный текст в шорткод, например так:

    Текст что будет выделяться

    Для вызова шорткода нужно просто написать в нужном месте записи:

    Как вставить шорткод в виджет WordPress

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

    Add_filter("widget_text", "do_shortcode");

    Как вывести шорткод в любом месте темы WordPress

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

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

    У них вид как у закомментированного текста. поэтому стандартные методы не подойдут. Такие шорткоды использует, например, плагин - WpShop . Для вывода таких шорткодов от плагина, нужно использовать такой способ с фильтром:

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

    Используете ли Вы шорткоды у себя на сайте?

    На этом все, спасибо за внимание. 🙂

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

    Пример простого шорткода

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

    Первая часть записи является массивом, состоящим из атрибутов id и color. Вместо этих значений в открывающем теге можно указать любые параметры с желаемыми именами. Вторая часть записи является текстом. Для того чтобы обработать его, необходимо перевести всю запись в PHP. Пользователь получит строку следующего содержания: my_shortcode(array("id"=>"1", "color"="white"), "Какое-то предложение").

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

    Как вставить шорткод в WordPress

    Использовать наборы функций очень просто. Блогеру нужно создать новый пост или открыть для редактирования уже имеющуюся запись. Затем необходимо переключить редактор текста на HTML-режим и указать код в . Можно также использовать атрибуты. Запись будет выглядеть так: .

    В шорткоды можно встраивать любой контент: текст. В WordPress 2.5 введен набор функций, называемый Shortcode API. После сохранения поста содержание записи обрабатывается. Параллельно Shortcode API преобразует шорткоды для исполнения возложенных на них функций.

    Назначение

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

    Создание шорткодов

    Если пользователь знает, как напечатать простую PHP-функцию, то он с легкостью достигнет поставленной цели. Для создания шорткода нужно найти и открыть один из файлов WordPress functions.php. Затем необходимо вставить строку function hello() {return "Привет, мир!";}. Этим действием будет создана функция, отвечающая за вывод указанного текста. Чтобы трансформировать ее в шорткод, требуется вставить команду add_shortcode()» после опции «hello().

    Строка будет выглядеть так: add_shortcode("hw", "hello");. После создания шорткода пользователь может использовать его в заметках и на страницах. Для этого необходимо переключиться в HTML-режим и ввести строку . Этот шорткод является наглядным примером того, насколько просто создавать подобные наборы функций.

    Использование плагинов

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

    WP Shortcode by MyThemeShop

    Совсем недавно это бесплатное расширение распространялось в виде премиум-решения. Сейчас плагин шорткодов WordPress содержит 24 основных элемента: кнопки, географические карты, разделители, таблицы расценок и многое другое. Для начала работы блогеру нужно установить дополнение и открыть текстовый редактор. Чтобы добавить шорткод, необходимо кликнуть по иконке «+». Количество настроек в появляющемся всплывающем окне зависит от выбора пользователя.

    Shortcodes Ultimate

    Это одно из самых популярных расширений. Дополнение встречается в каждой подборке плагинов для настройки WordPress. Расширение доступно каждому пользователю. При необходимости загружаются платные дополнения к плагину. Блогер может работать с 50 элементами оформления страниц, генератором шорткодов и редактором стилей CSS.

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

    Fruitful Shortcodes

    Это расширение визуально достаточно простое. Обновление программного продукта выполняется нечасто. Однако дополнение содержит все стандартные шорткоды WordPress.

    Блогер может работать с горизонтальными и вертикальными табами, колонками, разделителями и т. д. Добавленные элементы мгновенно отображаются в графическом редакторе. Пользователь может выключить их для постов или веб-страниц с помощью раздела «Настройки».

    Shortcoder

    Этот плагин также часто встречается в разных подборках. Расширение обновляется очень редко. Пользователь может создавать наборы функций с применением HTML и JavaScript-кодов. Одним из самых простых примеров является размещение рекламного блока в тексте. Для этого нужно создать набор функций adsenseAd.

    Плагин Shortcoder - это очень гибкий инструмент. Здесь не удастся найти базовые шорткоды. Пользователь может создать необходимые элементы самостоятельно.

    Easy Bootstrap Shortcode

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

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

    WP Canvas - Shortcodes

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

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

    Arconix Shortcodes

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

    Simple Shortcodes

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

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

    Шорткоды WordPress: настройка

    Как вывести ссылку для публикации поста в социальной сети «Твиттер»? Для этого требуется открыть файл functions.php и вставить рядом с другими шорткодами WordPress в PHP строку следующего содержания: function twitt(){return "ID).""title="поделись заметкой с друзьями!" >отправить";}add_shortcode("twitter", "twitt");.

    Затем необходимо переключиться в HTML-режим. Далее следует ввести слово . Ссылка будет добавлена туда, где пользователь оставил шорткод.

    Набор функций "подпишись на RSS"

    Одним из самых эффективных способов увеличения числа подписчиков является показ правильно оформленного сообщения. Блогеру не нужно менять весь код темы для WordPress. Пользователь должен решить самостоятельно, где будет выводиться набор функций. Код выглядит так: function subscribeRss() {return "Подписка ";} add_shortcode("subscribe", "subscribeRss");.

    Добавление Google AdSense

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

    Добавление RSS-канала

    Чтобы выполнить эту задачу, нужно преобразовать функцию в шорткод. Затем необходимо включить HTML-режим и вставить в поле редактора строку . Первый атрибут указывает на URL RSS-ленты, а второй - на количество заметок для вывода.

    Добавление постов из базы данных

    Чтобы вызвать перечень статей прямо в редакторе, нужно создать шорткод, переключиться на HTML-режим и вставить строку . Эта команда позволит вывести список пяти постов из категории с ID 2. Стоит обратить внимание на то, что плагины WordPress могут отображать связанные между собой записи. Однако с помощью шорткода блогер легко получит список любого количества публикаций из отдельной категории.

    Вызов картинки последней статьи

    Чтобы упростить работу с изображениями, можно использовать наборы функций. Для вызова картинки последнего поста нужно создать шорткод. Затем следует включить HTML-режим и вставить в поле для редактирования строку .

    Добавление наборов функций в виджеты

    Стоит обратить внимание на то, что в боковых колонках сайта ни один шорткод WordPress не работает. Ограничение платформы можно обойти. Для этого необходимо открыть файл темы для WordPress functions.php и вставить строку add_filter(‘widget_text’, ‘do_shortcode’);. Шорткод будет добавлен в виджет.

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

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

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

    Мест для использования шорткодов в WordPress очень и очень много: вставка слайдера, формы, прайса, таблиц, яваскрипт кода, стилей и многое другое. Мест где нужно вставить shortcode с параметром ещё больше:-).

    Создать шорткод / shortcode WordPress

    Задача создать шорткод в WordPress не такая уж и сложная. Для этого нужно создать PHP функцию и записать ее в файл вашей теми. Например, создадим функцию myTxt и запишем ее в functions.php:

    function myTxt(){
    $str="Заголовок

    Текст описание

    ";
    return $str;
    }

    также в function.php нужно записать вот такой коротенький код:

    Все, у вас есть собственный шорткод который можно вот так вставить в пост:

    Шорткод wordpress с параметрами

    Теперь немного усложним задачу, попробуем передать в наш шорт код какие то переменные с поста. Предположим в шорткод вордпрес нужно передать информацию с поста через его параметры. У меня в примере будет 2 параметра шорткода - это заголовок и текст описание, которое я хочу выводить. Модернизируем нашу функцию myTxt вот таким образом:


    $str="".$atts["title"]."

    ".$atts["txt"]."

    ";
    return $str;
    }

    add_shortcode("myCodeInPost", "myTxt"); - оставляем как и было, без изменений

    А в посте пишем вот такой вызов шорткода:

    Если вы заметили, у нас еще есть переменная $content, - она отвечает за текст внутри шорткода. Например, если мы хотим вывести специфический текст, выделить его как то. То мы можем модернизировать шорткод таким образом:

    function myTxt($atts, $content = null){
    $str="".$atts["title"]."";
    $str="".$content.""
    return $str;
    }
    add_shortcode("myCodeInPost", "myTxt");

    Вызывать этот шорткод с параметрами мы будем вот так: Текст для модернизации

    Все ваш шорткод с параметрами готов, можете использовать на здоровье.

    Как можно узнать сдесь.

  • CMS ,
  • WordPress ,
  • Разработка веб-сайтов
  • Что такое шорткоды Начиная с версии 2.5, разработчики WordPress ввели понятие «Shortcodes API». Этот функционал позволяет создавать и использовать макрокоды в страницах сайта или в записях блога. Например, простая и короткая запись добавит на странице целую фотогалерею.

    В статье хочу показать, как правильно создавать более сложные шорткоды и решить наиболее распространенные проблемы при их создании:

  • Подключение сторонних скриптов и запуск только при наличии шорткода на странице.
  • Многоуровневый шорткод.
    • Составной шорткод.
    • Вложенность шорткодов.
  • Подготовка почвы Прежде чем начать создавать что-либо, предлагаю свой вариант размещения файлов:/
    /Includes/
    shortcodes.php

    functions.php

    Практически в каждом руководстве предлагают создавать шорткоды прямо в файле functions.php. Скажу сразу: я - противник такого подхода. Вместо этого настоятельно рекомендую вынести все шорткоды в отдельный файл (includes/shortcodes.php) и подключить его в functions.php одной строкой. Это значительно разгрузит functions.php и сделает код более читабельным.

    Заметка : WordPress, конечно, поддерживает подключение файлов через require, но очень не рекомендует делать этого. Вместо этого предлагается использовать get_template_part() .

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

    Пример такой реализации:

    Function foobar_func($atts) { return "foo and bar"; } add_shortcode("foobar", "foobar_func"); function foo_script () { wp_register_script("foo-js", get_template_directory_uri() . "/includes/js/foo.js"); wp_enqueue_script("foo-js"); } add_action("wp_enqueue_scripts", "foo_script");

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

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

  • Определить шорткод как отдельный класс.
  • Добавить флаг, который определит есть ли данный шорткод на странице.
  • Загружать скрипт только по флагу присутствия шорткода.
  • Вот и все…

    Пример такой реализации:

    Class foobar_shortcode { static $add_script; static function init () { add_shortcode("foobar", array(__CLASS__, "foobar_func")); add_action("init", array(__CLASS__, "register_script")); add_action("wp_footer", array(__CLASS__, "print_script")); } static function foobar_func($atts) { self::$add_script = true; return "foo and bar"; } static function register_script() { wp_register_script("foo-js", get_template_directory_uri() . "/includes/js/foo.js"); } static function print_script () { if (!self::$add_script) return; wp_print_scripts("foo-js"); } } foobar_shortcode::init();

    В отличие от предыдущего варианта реализации, этот шорткод инициализируется, но все скрипты подгружаются только при наличии шорткода на странице.

    Вложенные шорткоды Есть еще пара проблем, с которыми могут столкнуться начинающие разработчики:
    • Создание многоуровневого шорткода (состоящий из нескольких).
    • Использование шорткода внутри такого же шорткода.

    Теперь - более детально.

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

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


    -


    - …
    -
    -
    - Option 1
    - Option 2
    - …
    -

    В данном примере используется три шорткода: .

    add_shortcode("price", "price_code");
    add_shortcode("plan", "plan_code");
    add_shortcode("option", "option_code");

    Для предотвращения использования внутренних шорткодов в качестве отдельных предлагается следующая схема:

    Price -> вывод кода на страницу
    Plan -> получение данных
    Option -> получение данных

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

    Function price_code ($atts, $content) { // инициализация глобальных переменных для прайс планов $GLOBALS["plan-count"] = 0; $GLOBALS["plans"] = array(); // чтение контента и выполнение внутренних шорткодов do_shortcode($content); // подготовка HTML кода $output = ""; if(is_array($GLOBALS["plans"])) { foreach ($GLOBALS["plans"] as $plan) { $planContent = ""; $planContent .= $plan; $planContent .= ""; $output .= $planContent; } } $output .= ""; // вывод HTML кода return $output; }

    Описание функций внутренних шорткодов:

    Function plan_code ($atts, $content) { // получаем параметры шорткода extract(shortcode_atts(array("title" => "", // Plan title name "price" => "0", // Plan price), $atts)); // Подоготавливаем HTML: заголовок плана $plan_title = ""; $plan_title .= " "; $plan_title .= ""; // Подоготавливаем HTML: стоимость $f_price = round(floatval($price), 2); $f_price = ($f_Price > 0) ? $f_Price: 0; $s_price = "$".$f_Price; $price_plan = ""; $price_plan .= "

    ".$s_price."

    "; $price_plan .= " ".$text.""; $price_plan .= ""; // инициализация глобальных переменных для опций $GLOBALS["plan-options-count"] = 0; $GLOBALS["plan-options"] = array(); // читаем контент и выполняем внутренние шорткоды do_shortcode($content); // Подоготавливаем HTML: опции $plan_options = ""; if (is_array($GLOBALS["plan-options"])) { foreach ($GLOBALS["plan-options"] as $option) { $plan_options .= $option; } } $s_OptionsDiv.= ""; // Подоготавливаем HTML: компонуем контент $plan_div = $plan_title; $plan_div .= $price_plan; $plan_div .= $plan_options; // сохраняем полученные данные $i = $GLOBALS["plan-count"] + 1; $GLOBALS["plans"][$i] = $plan_div; $GLOBALS["plan-count"] = $i; // ничего не выводим return true; } function option_code ($atts, $content) { // Подоготавливаем HTML $plan_option = ""; $plan_option .= "

    ".do_shortcode($content)."

    "; $plan_option .= ""; // сохраняем полученные данные $i = $GLOBALS["plan-options-count"] + 1; $GLOBALS["plan-options"][$i] = $plan_option; $GLOBALS["plan-options-count"] = $i; // ничего не выводим return true; }

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

    Конечно же, вы можете еще оптимизировать и усовершенствовать этот шорткод, но все же, думаю, основную идею продемонстрировать мне удалось.

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

    Content
    Content

    К сожалению, для WordPress уже такая вложенность “не по зубам”. Верстка разлетится уже на втором контенте. Происходит это потому что при открытии шорткода WordPress сразу же ищет вторую (закрывающую) часть этого шорткода, т.е. в данном примере первая колонка будет закрыта на первом же вложенном шорткоде.

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

    Add_shortcode("column_half", "column_half_code"); add_shortcode("column_half_inner", "column_half_code"); function column_half_code ($atts, $content) { return "".do_shortcode($content).""; } В этом случае исходный синтаксис станет: Content Content Content

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