Совет: как использовать шорткоды в виджетах в WordPress

Совет: как использовать шорткоды в виджетах в WordPress

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

Как включить шорткоды в текстовых виджетах

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

В текстовый виджет можно добавить код JS, довольно мощная вещь. Тем не менее, если вам необходим, к примеру, PHP для получения каких-либо данных с сервера, по умолчанию такой виджет делать это не умеет.

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

Парсингом шорткодов в WP занимается функция do_shortcode(). Функция принимает один обязательный параметр, текст для парсинга, и возвращает готовый результат. То есть данную функцию можно напрямую использовать в виде колбэк функции в фильтре widget_text. Код ниже можно использовать в файле плагина или в файле темы functions.php.

И все. Теперь текстовый виджет будет парсить любой существующий шорткод.

Как создать новый виджет шорткодов

Можно пойти по другому пути и создать свой собственный виджет. Текстовый виджет отлично работает, поэтому мы просто можем адаптировать его код (найти можно тут /wp-includes/default-widgets.php). Нам необходимо создать свой собственный плагин. Никогда не модифицируйте ядро WP.

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

Во-вторых, нам нужно изменить метод widget(), который говорит WP, как отображать виджет. Необходимо изменить контент переменной $text, в которой хранится текст для отображения. Мы удаляем вызов фильтра widget_text и вызываем функцию do_shortcode() для контента.

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

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

Заключительные слова

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

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

Автор: Jérémy Heleine

Источник: //www.sitepoint.com/

Редакция: Команда webformyself.

Метки:

Похожие статьи:

Комментарии Вконтакте: