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

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

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

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

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

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

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

Хотите быстро научиться создавать сайты и блоги на WordPress с уникальным дизайном?

Получите самую полную в Рунете бесплатную систему обучения создания сайтов на WordPress

Узнать подробнее

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

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

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

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

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

Хотите быстро научиться создавать сайты и блоги на WordPress с уникальным дизайном?

Получите самую полную в Рунете бесплатную систему обучения создания сайтов на WordPress

Узнать подробнее

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

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

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

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

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

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

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

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

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

Хотите быстро научиться создавать сайты и блоги на WordPress с уникальным дизайном?

Получите самую полную в Рунете бесплатную систему обучения создания сайтов на WordPress

Узнать подробнее

WordPress-Профессионал

Посмотрите информацию по API WordPress, благодаря Вы сможете научиться писать плагины и виджеты

Научиться

Метки:

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

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

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Я не робот.

Spam Protection by WP-SpamFree