Wordpress: Парные шорткоды
Помимо простых шорткодов в WordPress доступны так же парные или охватывающие шорткоды. Используя синтаксис на подобие HTML тэгов, парные шорткоды могут использоваться для заключения в них какого нибудь текста с которым вам требуется что то сделать. Например парные шорткоды отлично подходят в случаях, когда надо стилизовать или обработать особым образом какую-нибудь часть текста страницы или поста, в зависимости от каких-нибудь условий.
Как пример в этом рецепте мы создадим парный шорткод, который будет работать следующим образом: если на страницу зайдет зарегистрированный пользователь, то он увидит содержимое страницы в полном объеме, а если на страницу зайдет гость, то та часть текста, которая будет заключена в наш парный шорткод будет от пользователя скрыта. В данном случае мы могли бы реализовать задумку и при помощи filter хука, но с шорткодом мы имеем преимущество: нам не надо просматривать содержимое всей страницы.
- Перейдите в директорию плагинов движка WordPress: wp-content/plugins
- Создайте там новую директорию и назовите её private-item-text
- Зайдите внутрь директории и создайте новый текстовый файл. Назовите его private-item-text.php
- Откройте ваш новый файл в текстовом редакторе и добавьте следующий код:
<?php /* Plugin Name: Private Item Text Plugin URI: Description: Парный шорткод "Приватный текст" Version: 1.0 Author: Самый лучший автор Author URI: http://xxxxxxx.xx/ License: GPLv2 */
-
Добавьте следующую строку кода, создающую новый шорткод и имя функции, которая
будет вызвана, когда шорткод буден обнаружен на странице:
add_shortcode('private', 'pit_private_shortcode');
-
Далее добавим следующий код, реализующий функцию-обработчик:
function pit_private_shortcode($atts, $content = null) { if (is_user_logged_in()) { return '<div class="private">' . $content . '</div>'; } return '<strong>IT'S PRIVATE AREA!</strong>'; }
- Сохраняем файл
- Идем в админку нашего сайта во вкладку Plugins
- Находим наш плагин в списке и активируем его
- Создайте новую страницу или пост и разместите в текстовом редакторе какой-нибудь контент, окруженный тегами [private] и [/private]
- Сохраните изменения.
Теперь если просмотреть то, что мы только что создали на сайте то мы сможем увидеть весь контент без изменений, но если мы разлогинимся и вновь взглянем на страницу то больше контента мы не увидим, а увидим надпись IT'S PRIVATE AREA!
Как это работает...
Подобно filter хукам, функция-обработчик парного шорткода получает первым параметром массив переданных атрибутов шорткода, как это было показано в прошлом рецепте. В добавок к этому мы получаем так же второй параметр, содержащий копию текста, которого окружает шорткод. Это дает возможность функции-обработчику вернуть этот текст с дополнительным HTML кодом, или полностью заменить его новым содержимым. Так же, мы использовали функцию WordPress: is_user_logged_in, чтобы определить, зарегистрирован ли текущий пользователь в системе или нет. На основе результата этого запроса, мы определяем, надо ли показывать содержимое шорткода или нет.
Предыдущие статьи этого цикла:
- WordPress: С чего начинаются плагины
- WordPress: Добавление контента в тег head страниц
- WordPress: Функции для работы с путями
- WordPress: Использование хуков фильтров
- WordPress: Добавление содержимого в каждый пост при помощи фильтров
- WordPress: Изменение содержимого страницы при помощи фильтров
- Отлов ошибок при разработке плагинов
- Wordpress: Простые шорткоды
- WordPress: Шорткоды с параметрами