шорт код страницы вордпресс
Как вставить шорткод в шаблон WordPress
Разработчики WordPress включили поддержку шорткодов в версии 5.7 – это значительно упростило вставку различных функций плагинов в шаблоне. Он представляет собой короткий текст, помещенный в квадратные скобки. При этом нет необходимости вставлять сложный PHP, засоряя записи и страницы.
Шорткод – что это?
Его можно охарактеризовать следующим образом – короткий код для внедрения какой-либо функции в выбранном месте сайта. Состоит из легко запоминающегося текста. Он скрывает отображение длинного кода, записанного в PHP-файле, что упрощает работу для новичков и малоопытных вебмастеров. Для профессионалов shortcode позволяют экономить время на заранее разработанных функциях.
С их помощью можно выводить текст, оформлять контент, добавлять видео, слайды, изображения, графики и другие элементы. Такие плагины, как Nextgen Gallery, Visual Composer, Contact Form 7 используют шорткоды для размещения блоков и контента.
Регистрируется несколькими способами:
Известно, что большое количество дополнительных модулей и приложений подтормаживает работу ресурса, поэтому рассмотрим наиболее оптимизированный вариант. Следует зайти в functions.php, находящийся в корневой папке текущей темы и открыть его через текстовый редактор Notepad++. После чего можно вставить шорткод в тему WordPress. Регистрация осуществляется следующим образом:
На примере видно, как можно организовать регистрацию рекламного блока AdSense:
// Регистрация функцию function add_adsense () < ‘; |
Сделать шорткод WordPress достаточно просто, что увеличивает производительность работы с контентом. После вставки shortcode, в указанном месте будет отображена реклама Google. Теперь необязательно использовать плагины или устанавливать громоздкий код в статьи или другие места сайта.
Следующий пример позволяет сократить время добавления атрибута nofollow к ссылкам на внешний ресурс. В обычной ситуации процесс происходит так: переключение в режим HTML, поиск ссылки, добавление тегов. Использование shortcode не требует переключения режимов – достаточно работать в визуальном редакторе. Регистрация:
$link =
explode ( “href”,
$content )
;
Для скрытия URL, следует обернуть его в зарегистрированные теги:
[nf] Внешняя ссылка [/nf] |
Подключение стиля к контенту:
Добавив текст в теги, фоновая часть заполняется желтым цветом:
[yb] Участок текста [/yb] |
Названия указываются на свое усмотрение – чем короче, тем проще запоминать и вписывать.
Часто используемые shortcode можно добавить в панель инструментов редактора. Вставить шорткод в страницу WordPress также легко, как в запись. Все действия выполняются через визуальный редактор.
Как вставить шорткод в шаблон WordPress
Ситуация с квадратными скобками не работает с файлами темы, применяется специальная функция «do_shortcode»:
Текст в квадратных скобках – название требуемого шорткода. Также, данная конструкция работает с виджетами.
Плагины для работы с shortcode
Система имеет по умолчанию несколько видов шорктодов, способных незначительно расширить стандартные функции:
Для пользователей, не разбирающихся в PHP, желающих качественно и производительно работать – существуют плагины с набором всех необходимых функций.
Shortcodes Ultimate
Лучшее решение для работы с шорткодами в мире
Перейти
Мировой лидер по коллекции элементов для расширения возможностей и визуальной составляющей при помощи шорткодов. Расширение предполагает внедрение кодов в посты, страницы и файлы темы. С его помощью можно создать слайдеры, кнопки, блоки, видео-вставки, карусели. В визуальном редакторе добавляется отдельная кнопка, открывающая меню плагина.
Обладателям премиальной версии предлагаются дополнительные элементы – 15 штук, 60 скинов и возможность создавать пользовательские шорткоды. Все это можно приобрести по отдельности либо вместе. Скачано более 700 000 копий, средняя оценка вебмастеров – 5 звезд. Версия со всеми аддонами обойдется в 59 долларов для одного сайта.
Column Shortcodes
Перейти
Отличный вариант для создания столбцов, достаточно вставить шорткод в страницу WordPress с необходимыми параметрами. В панели управления можно выбрать 10 колонок, каждая из которых отличается по ширине. Доступно редактирование отступов и подключение собственных стилей. Скачано более 100 000 копий, оценка пользователей – 4,5 из 5. На странице расширения размещена подробная инструкция и ответы на часто задаваемые вопросы.
WP Shortcode by MyThemeShop
Перейти
Интересное решение, в особенности для тех вебмастеров, которые часто меняют темы или их настройки. Все функции сохраняются даже при смене шаблона. Доступно около 24 шорткодов для создания кнопок, блоков, ценовых таблиц, переключателей. После установки, в редакторе записей/страниц появляется кнопка добавления shortcode. Во всплывающем окне имеется строка выбора и некоторые параметры. Настройка легкая и не требует особых навыков.
Распространяется на бесплатной основе, скачано более 70 000 раз. Оценка пользователей – 4,5 балла.
Bootstrap Shortcodes
Перейти
Плагин поможет сделать шорткод WordPress вебмастерам, использующим темы с включенной библиотекой bootstrap 3. Предлагается внушительный список функций. Основные доступные элементы:
Бесплатное расширение скачано более 50 000 раз, оценка вебмастеров – 5 из 5. Русский язык недоступен.
Shortcake
Плагин не позволяет вставить шорткод в тему WordPress, но отлично справляется с их добавлением в записи и страницы. Рекомендован для новичков, поскольку имеет простой интерфейс, не требует здания кода и включает обучающие материалы. Благодаря функции импорт/экспорт возможен обмен шорткодами с другими сайтами.
Основные возможности:
Распространяется на бесплатной основе. Скачан порядка 20 000 раз и оценен пользователями в 4 балла.
Заключение
Вставить шорткод в WordPress можно при помощи легкой функции, предварительно зарегистрировав его. С виджетами ситуации аналогичная. При добавлении shortcode в записи и страницы вовсе не возникает сложностей – вставляются в нужном месте в визуальном редакторе. Для расширения возможностей и производительности можно применить рассмотренные плагины.
Шорткоды
Шорткоды – могут содержать в себе какой-то PHP-код и функции, которые можно задействовать прямо в контенте записей и страниц. Появились в версии WordPress 2.5.
Например можем взглянуть на шорткод галереи, который выглядит так:
Понятное дело, что данный функционал даёт разработчикам WordPress потрясающие возможности — на сегодняшний день очень актуальна вставка в посты форм, кнопок, слайдеров.
Даже с приходом Gutenberg, вряд ли шорткоды в скором времени будут вытеснены блоками.
Кстати говоря, если вы интересуетесь темой разработки, я бы хотел порекомендовать вам свой видеокурс по созданию шаблона для WordPress с нуля.
Так же, как у функции могут быть аргументы, так и шорткод может иметь собственные параметры. Ещё один пример с шорткодом:
В параметре ids перечислены ID изображений, входящих в галерею, параметр size — размер вставляемых изображений.
Стандартные шорткоды WordPress
В WordPress уже есть определённый набор шорткодов, например тот же шорткоды галереи, с которым мы уже познакомились ранее.
Другие стандартные шорткоды это:
Экранирование шорткодов
А точнее, как сделать так, чтобы шорткод присутствовал в контенте вашего поста, но не выполнялся? Или другими словами, как я вывел шорткоды в предыдущей главе поста, не выполняя их?
Всё, что нужно сделать, это обернуть его ещё в одни квадратные скобки, вот так:
Если же у вашего шорткода есть открывающий и закрывающий тег, то он будет выглядеть следующим образом:
Обратите внимание, что эта история с экранированием работает только в том случае, если шорткод уже зарегистрирован на вашем сайте. Если же нет, то ожидайте, что будут отображены все скобки.
Ну и про HTML-сущности тоже помним, да? [шорткод]
На самом деле именно в этом моменте можно кекнуть, потому что часто встречаю уроки по WordPress, где их отображают с пробелом, типо [ gallery] и при этом уточняют, что пробел нужно удалить 😹
Как создать шорткод WordPress?
1. Простой пример
2. Шорткод с параметрами (атрибутами)
Окей, я уже писал, что у шорткодов могут быть свои параметры, давайте теперь посмотрим как это делается.
3. Закрывающиеся шорткоды и шорткод внутри шорткода
Кроме того, вовнутрь закрывающихся шорткодов можно вставлять и другие шорткоды (благодаря функции do_shortcode()).
В соответствии с этим давайте переделаем наш код из предыдущего примера:
Теперь шорткод следующего вида [trueurl anchor=»главная»][misha][/trueurl] выведет ссылку на главную страницу вашего сайта (про шорткод [misha] я писал выше).
4. Используем буферизацию для вывода прямо в шорткоде
Иногда бывает, что никак не получается внутри шорткода возвратить результат, например мы используем функцию get_template_part() внутри. Что делать в таких ситуациях?
Решается это довольно легко – при помощи буферизации.
Добавляем кнопку вставки шорткода в визуальный редактор поста TinyMCE
Понятное дело, что гораздо удобнее вставлять шорткод будет через встроенный редактор TinyMCE, а если при этом будет ещё реализован интерфейс, позволяющий задавать параметры шорткода, то вообще круто.
PHP-код
Вне зависимости от того, будет ли ваша кнопка текстовая, либо с иконкой, будет ли она содержать дополнительные поля ввода (параметры шорткода) или нет — во всех случаях PHP-код регистрации кнопки будет одинаков.
В этом примере для получения URL папки с текущей темой я использовал функцию get_stylesheet_directory_uri(). true_button.js — собственно сама кнопка, создайте этот файл в директории с темой (или там, где вам удобно, но не забудьте в этом случае поменять путь к нему).
JavaScript. Пример простой кнопки
Текстовый вариант кнопки вставки шорткода в визуальном редакторе TinyMCE.
Кнопка с иконкой, выпадающим списком и с возможностью задавать параметры шорткода
Начну с того, что вставлю (а точнее заменю) код в файл true_button.js :
После вставки кода моя кнопка уже появилась и работает. Единственное только — у неё нет никакой иконки (ну кроме стрелочки вниз).
Сейчас нам понадобится немного CSS-кода. Прежде всего хочу сказать, что вы можете использовать:
В своем примере я использовал обычную картинку с перцем, которая у меня находится в той же директории, что и CSS-файл.
Если использовали этот же способ и иконка не появилась — попробуйте прописать к ней абсолютный URL.
Всплывающее окно, в котором можно задать параметры шорткода, появляющееся при нажатии на кнопку в визуальном редакторе.
Если вы хотите использовать dashicons, то ваш CSS для иконки перца будет выглядеть примерно следующим образом:
Применение шорткодов в коде PHP
Тут всё сводится к использованию одной функции — do_shortcode().
do_shortcode()
Функция в качестве параметра может содержать лишь один шорткод:
Или шорткод и какой-то контент:
Популярный пример, позволяет получить или вывести содержимое поста с применением шорткодов при помощи функции get_the_content():
Вот пожалуй и всё. Если у вас возникнут какие-то вопросы, пожалуйста, оставляйте их ниже в комментах, буду рад помочь.
Ещё пара интересных примеров шорткодов
Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.
Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!
Шорткод отображения записей
Опция Показывать шорткод записей дает возможность добавлять список записей вашего блога на разные страницы. Используя параметр Аргументы, вы можете задать показ записей с отбором по рубрикам или тегам.
Шорткоды — это короткие отрывки кода, созданные для WordPress, чтобы у вас была возможность добавлять различные функции к вашему сайту или блогу. Подробнее о шорткодах рассказано здесь.
Содержание
Шорткод [display-posts] не будет работать для сайтов с тарифными планами WordPress.com Business и выше, где используются плагины. Разные плагины предоставляют сходные функциональные возможности.
Если вы добавили шорткод перед переходом на тарифный план Business или выше, ваш код сохраняется. Как только вы установите плагин шорткодов показа записей, эти коды снова будут отображать содержимое.
Обзор шорткода показа записей
Могут быть самые разные причины, чтобы использовать шорткоды показа записей.
Добавление шорткода
Следующие инструкции можно использовать, чтобы отредактировать страницу, запись или текстовый виджет. При добавлении следующего кода вы будете видеть в редакторе вместо кода только его заполнитель. После публикации страницы вы будете видеть фактический шорткод.
Если вы используете редактор блоков WordPress, вы также можете добавить блок шорткода для добавления шорткода показа записей.
При использовании этого шорткода требуется до одного часа, чтобы начали отображаться новые записи и обновления к существующим записям.
Шорткод показа записей по умолчанию отображает маркированный список из 10 последних по времени записей. Можно настроить количество записей и стиль, а также выбрать элементы записей, которые будут отображаться в списке (заголовок, избранные изображения, цитаты и т. д.)
Отображение аргументов
С помощью аргументов задаются настройки показа записей. Ниже перечислены типовые аргументы, которые вы можете добавлять к шорткоду отображения постов, и показано, как будет выглядеть шорткод с добавленным аргументом.
author
Указывает автора записи
Значение по умолчанию: пусто
Пример: [display-posts author=»bill»]
category
Указывает слаг рубрики (или список слагов рубрики, разделенных запятыми). Посмотрите, как выглядит этот шорткод, в этом примере сайта.
Значение по умолчанию: пусто
Пример: [display-posts category=»fishing,hiking»]
date_format
Указывает используемый формат даты, если параметр include_date = true. Подробнее об этом сказано в разделе Кодекса Форматы даты и времени.
Значение по умолчанию: ‘(n/j/Y)’
Пример: [display-posts include_date=»true» date_format=»F j, Y»]
id
Указывает идентификатор конкретной записи или идентификаторы нескольких записей, которые следует отображать.
Значение по умолчанию: пусто
Пример: [display-posts ]
image_size
Указывает размер для показа избранного изображения, если оно есть в записи. Для параметра image_size можно выбрать значения thumbnail, medium, large (в разделе «Настройки > Медиафайлы»).
Значение по умолчанию: пусто
Пример: [display-posts image_size=»thumbnail»]
если вы используете тему, которая поддерживает опции содержимого, и в ней отключен показ избранных изображений на страницах, аргумент image_size так же не будет влиять на шорткоды, используемые на странице сайта: избранные изображения не будут появляться для любых записей, добавляемых через этот шорткод, даже если он предписывает их показывать.
include_content
Указывает, что после заголовка следует включать все содержимое записи.
Значение по умолчанию: пусто
Пример: [display-posts include_content=»true»]
include_date
Указывает, что после заголовка следует включать дату записи. По умолчанию используется формат (7/30/12), но его можно изменить с помощью параметра date_format.
Значение по умолчанию: пусто
Пример: [display-posts include_date=»true»]
include_excerpt
Указывает, что после заголовка следует включать цитату из записи (и дату, если она есть).
Значение по умолчанию: пусто
Пример: [display-posts include_excerpt=»true»]
offset
Указывает количество пропускаемых записей
По умолчанию: 0
Пример: [display-posts offset=»3″]
order
Указывает порядок размещения записей: от старых к новым (DESC) или от новых к старым (ASC).
Значение по умолчанию: DESC
Пример: [display-posts order=»ASC»]
orderby
Указывает, как следует сортировать записи. Доступные параметры перечислены здесь.
Значение по умолчанию: date
Пример: [display-posts orderby=»title»]
portfolio_type
Если используется тип записи «Портфолио», выберите здесь конкретные элементы для данного типа портфолио.
post_parent
Задает показ страниц, для которых заданная страница является родительской. Вы можете указать идентификатор или «текущая», чтобы использовать в качестве родительской текущую страницу.
Значение по умолчанию: пусто
Пример: [display-posts post_type=»page» post_parent=»8″]
post_status
Задает показ записей с определенным статусом записи
Значение по умолчанию: публиковать
Пример: [display-posts post_status=»publish, future»]
post_type
Задает используемый тип записи. Можно использовать значение по умолчанию (post или page). Для типа Портфолио используйте значение «jetpack-portfolio». Аналогичным образом, для типа Отзывы используйте значение «jetpack-testimonial».
Значение по умолчанию: post
Пример: [display-posts post_type=»page»]
posts_per_page
Задает количество отображаемых записей.
Значение по умолчанию: 10
Пример: [display-posts posts_per_page=»5″]
tag
Указывается слаг тега (или список слагов тега, разделенных запятыми)
Значение по умолчанию: пусто
Пример: [display-posts tag=»tag1, tag2″]
taxonomy, tax_term, tax_operator
Используйте эти параметры для расширенных запросов таксономии. Параметр «taxonomy» используется для запросов таксономии, «tax_term» — для слага термина (или терминов), которые вы хотите включить, «operator» — для выбора иного порядка терминов в запросе (скорее всего это поле не потребуется).
Значение по умолчанию: «taxonomy» = «пусто», «tax_term» = «пусто», «operator» = «IN»
Пример: [display-posts taxonomy=»color» tax_term=»blue, green»]
wrapper
Здесь выбирается тип HTML для отображения списков. Можно задать неупорядоченный список (ul), упорядоченный список (ol) или разделители (div) и затем выбрать для них стиль.
Значение по умолчанию: ul
Пример: [display-posts wrapper=»ol»]
Примеры настройки
Ниже приведены примеры шорткодов, в которых для показа конкретного списка записей используются несколько аргументов.
[display-posts tag=»advanced» posts_per_page=»20″]
Будут перечислены 20 последних записей с тегом advanced.
[display-posts tag=»advanced» image_size=»thumbnail»]
Будут перечислены 10 последних записей с тегом Advanced и будет отображена запись с использованием размера Thumbnail.
[display-posts category=»must-read» posts_per_page=»-1″ include_date=»true» order=»ASC» orderby=»title»]
Будут перечислены все записи в категории Must Read (Обязательно прочесть), в алфавитном порядке, с датой, добавленной в конце.
Будут отображены записи в виде упорядоченного списка. Опции: ul — для неупорядоченных списков (значение по умолчанию), ol — для упорядоченных списков или div — для делителей.
Будут отображены только записи с идентификаторами (ID) 14 и 3.
Выравнивание изображений
В типовом запросе задается показ списка записей с заголовком, цитатой и миниатюрой, выровненными по правому краю. Ниже показан шорткод, который вы можете использовать:
[display-posts include_excerpt=»true» image_size=»thumbnail» wrapper=»div»]
В данном примере в список без маркеров включается цитата и добавляется изображение миниатюрного размера (вы можете настраивать размер изображений в разделе Управление → Настройки → Медиафайлы).
Чтобы получить изображение, плавающее по правому краю, добавьте этот код в пользовательский файл CSS (требуется платная услуга WordPress.com Premium или WordPress.com Business):
(Расширенные) запросы таксономии с несколькими критериями
Хотя для большинства пользователей достаточен запрос таксономии с одним критерием, этот шорткод поддерживает бесконечное количество запросов таксономии. Например, вы хотите отобрать все записи из рубрики «Избранные», отмеченные тегом «homepage». Мы будем использовать шорткод, который выглядит следующим образом.
[display-posts taxonomy=»category» tax_term=»featured» taxonomy_2=»post_tag» tax_2_term=»homepage»]
Вы можете использовать любое количество строк, но просто начнём с количества, равного 2. В списке полей ниже замените строку «(count)» на фактический номер.
Доступные поля:
taxonomy_(count)
Указывает, какую таксономию запрашивать
Значение по умолчанию: пусто
tax_(count)_term
Указывает, какие термины включать (если их несколько, они разделяются запятыми)
Значение по умолчанию: пусто
tax_(count)_operator
Указывает, какую операцию применять в запросе терминов (IN, NOT IN или AND)
Значение по умолчанию: IN
tax_relation
Описывает взаимосвязь между запросами таксономии с несколькими критериями (должны ли результаты соответствовать всем запросам или только одному из них). Доступные опции: AND и OR
Значение по умолчанию: AND
Лимиты
Шорткод отображения записей имеет ограничение на 100 отображаемых записей.
Шорткоды в WordPress
Шорткод (шоткод, shortcode, короткий код) в WordPress — это конструкция в тексте, которая будет обработана и заменена на указанный код/текст. Обрабатывается шорткод специальной PHP функцией, указанной при регистрации шорткода.
Shortcode API — это набор простых функций, которые позволяют разработчикам тем и плагинов создавать свои шорткоды, которые затем можно использовать в контенте для вывода готовых блоков контента. Например, это может быть форма контактов.
Для примера, следующий Шорткод (в контенте записи) добавит фотогалерею:
Шорткоды могут вызываться по-разному: | |
---|---|
[name] | «self-closing» Одиночный шорткод без параметров. |
[name size=»medium»] | «self-closing» Одиночный с параметрами. |
[name]текст[/name] | «enclosing» Контентный шорткод без параметров. Получает текст в качестве параметра. |
[name size=»medium»]текст[/name] | «enclosing» Контентный шорткод с параметрами. |
Видео о шорткодах в WordPress:
Список шорткодов WordPress
В WordPress по умолчанию регистрируются следующие шорткоды:
Синтаксис шорткода
Само-закрытие (self-closing)
Шорткод можно закрыть слэшем в конце (такой слэш называется self-closing маркером).
Пробел перед маркером необязателен. Пробелы после маркера не допускаются. Такой маркер является чисто косметическим и ни на что не влияет.
Контентные шорткоды не могут использовать self-closing маркер.
Имя шорткода
Атрибуты шорткода
Атрибуты указывать не обязательно, между именем и атрибутами нужен как минимум один пробел. Если указывается несколько атрибутов, каждый атрибут должен быть разделен по крайней мере одним пробелом.
Каждый атрибут должен соответствовать одному из этих форматов:
Имя атрибута
Значение атрибута
Заметки по значению атрибута:
Кавычки атрибута. Двойные кавычки » допускаются внутри значений в одинарных кавычках ‘ и наоборот: [name foo=’1 «2» 3’ bar=»4 ‘5’ 6″]
Экранировать спец-символы в атрибутах можно через кодирование HTML символов (HTML encoding).
HTML символы и > поддерживаются в атрибутах ограничено. Например, этот шорткод не будет правильно работать, из-за символа > :
Версия 4.0 умеет проверять HTML, так что следующий код будет работать:
Чтобы полностью поддерживать HTML в атрибутах можно, сначала кодировать вводимые пользователем значения, а затем декодировать при обработке.
Удаляемые символы. Следующие символы, если они не экранированы, будут:
Экранирование
Экранирование нужно, когда шорткод зарегистрирован, но его не нужно обрабатывать, а нужно показать как есть. Не зарегистрированный шорткод и так не будет обрабатываться.
Для экранирования нужно обрамить шорткод еще одними квадратными кавычками:
Вложенные шорткоды
Парсинг шорткодов срабатывает один раз для контента. Это значит, что если в Контентном шорткоде есть вложенный шорткод, он не будет обработан:
Одинаковое название
Парсер не сможет обработать вложенные шорткоды с одинаковым названием, потому что уровень вложенности не подсчитывается. Такое ограничение сильно ускоряет обработку шорткодов:
Как это работает
На хуке the_content срабатывает функция do_shortcode(), которая ищет и обрабатывает все шорткоды в контенте.
То что вернула функция-обработчик заменят шорткод в контенте.
До срабатывания функции do_shortcode() (до парсинга шорткодов), контент обрабатывается тремя ключевыми функциями:
Создание шорткода
Для создания шорткода используется функция add_shortcode(). Она принимает два параметра: имя шорткода и название PHP функции, которая будет обрабатывать шорткод.
Вот самый простой PHP-код который регистрирует новый шорткод [foobar] :
Теперь [foobar] в контенте записи изменяться на строку: «Привет! Я шорткод.»
Атрибуты шорткода
Давайте добавим поддержку атрибутов шорткоду из примера выше. Для этого используем функцию shortcode_atts():
Теперь [foobar name=»Виктор» age=»25″] в контенте измениться на строку: «Меня зовут Виктор мне 25 лет».
shortcode_atts() определяет какие у шорткода могут быть атрибуты, задает им дефолтные значения и удаляет неопознанные атрибуты.
Ассоциативный массив который описывает возможные атрибуты шорткода (это ключи массива) и их дефолтные значения.
Неочищенный массив с данными, которые были указаны в шорткоде. Они будут сравниваться с массивом выше.
$atts будет содержать массив аргументов шорткода, которые были указанны пользователем.
Если указать значение без названия параметра, то они будут добавлены в индексные элементы массива. Например для шорткода [name value attr=»val2″ val3] получим:
Рассмотрим еще один пример.
Из кода видно, что приняли мы одни данные, а получили после обработки другие. Что изменилось?
Вывод функции обработчика
Возвращаемое значение функции обработчика шорткода вставляется в контент записи вместо самого шорткода.
Буфиризация вывода
Контентные шорткоды
Для Enclosing шорткода функция-обработчик получит второй параметр содержащей контент.
Теперь если написать шорткод так:
Получим такой результат:
$content передается в функцию без какой-либо очистки, поэтому в нём может быть HTML:
Иногда наоборот, когда HTML недопустим нужно очищать вывод, удаляя все HTML теги функцией wp_strip_all_tags().
Атрибуты в Контентном шорткоде
В Контентном шорткоде можно также как и в Одиночном, указать атрибуты. Например разрешим атрибут class :
Вложенные шорткоды
Если в Контентном шорткоде есть вложенный шорткод, он не будет обработан.
Поэтому если все же нужно нужно обработать шорткод внутри шорткода, то при обработке контента первого шорткода, нужно использовать функцию do_shortcode(), чтобы обработать вложенные шорткоды.
Удаление шорткода
Также в Shortcode API есть функция которая удаляет все зарегистрированные шорткоды разом: см. remove_all_shortcodes().
PHP Функции
add_shortcode() | Добавляет новый шоткод и хук для него. |
shortcode_atts() | Обрабатывает атрибуты (параметры) шорткода: добавляет значения по умолчанию когда нужно и удаляет неподходящие атрибуты. |
remove_shortcode() | Удаляет зарегистрированный шорткод. |
remove_all_shortcodes() | Удаляет все зарегистрированные шоткоды. |
do_shortcode() | Находит в переданном тексте зарегистрированные шорткоды и обрабатывает их. |
apply_shortcodes() | Алиас функции do_shortcode(). |
has_shortcode() | Проверяет есть ли в переданном тексте указанный шоткод. |
shortcode_exists() | Проверяет зарегистрирован ли указанный шоткод. |
strip_shortcodes() | Удаляет/вырезает все шоткоды из переданного текста (контента). |
Заметки
wpautop
Шорткоды обрабатываются после того, как контент записи будет обработан функцией wpautop(). Поэтому, возвращаемая строка из функции-обработчика уже не будет обрабатываться этой функцией.
wpautop() распознает зарегистрированные шорткоды и не обрабатывает их (не добавляет p или br теги вокруг или внутри).
wptexturize
Шорткоды обрабатываются после того, как контент записи будет обработан функцией wptexturize(). Она обрабатывает незарегистрированные шорткоды как обычный текст, и заменяет в нем кавычки.
Чтобы этого не происходило шорткод можно обернуть в тег или
Или можно добавить шорткод в список не-текстурируемых шорткодов. Делается это через хук no_texturize_shortcodes.
Разные функции для одного шорткода
Если зарегистрировать два шорткода с одинаковыми названиями, но разными функциями-обработчиками, то применяться будет последняя функция. Т.е. сработает шорткод добавленный последним.
Одна функция для разных шорткодов
Смешанный вызов одного шорткода
Парсер не умеет обрабатывать смешанный вызов одно шорткода, когда он вызывается как Self-closed и Enclosing. Например:
Незарегистрированные шорткоды
Некоторые авторы плагинов не регистрируют шорткод, например, чтобы отключить вложенный шорткод до тех пор, пока не будет вызвана функция обработчика родительского шорткода. Это может привести к тому что шорткоды станут нерабочими. Например:
Незарегистрированные шорткоды будут считаться обычным текстом, который не имеет особого значения. Чтобы шорткод имел значение для wptexturize() его можно добавить в список через хук no_texturize_shortcodes:
Незакрытые шорткоды
В некоторых случаях анализатор шорткодов не может корректно работать с одним шорткодом, который используется как Одиночный и Контентный шорткод. Например в этом случае синтаксический анализатор будет правильно идентифицировать только второй экземпляр шорткода:
Однако так проанализирует оба:
Шорткод в атрибуте HTML тега
Начиная с версии 4.2.3 были наложены ограничения на использование шорткодов внутри HTML тегов. Например, следующий шорткод не будет работать корректно, поскольку он вложен в атрибут скрипта:
Обойти это можно создав шорткод, который выводит весь необходимый HTML, а не только одно значение.