Создание собственных шорткодов(shortcodes) для WordPress

13-09-18 WordPress ShortCode, WordPress 2

Начиная с версии 2.5 WordPress поддерживает шорткоды (shortcodes) и все, кто имел дело с WordPress, наверняка, использовали их. Обычно они используются вместе с плагинами или темами. Работают они так: вы пишете конструкцию, заключенную в квадратные скобки, а затем WordPress заменяет её генерируемым контентом. Это может быть простая строка или результат работы сложной PHP функции.
В этой статье — простой рецепт приготовления шорткодов для WordPress.

Простой шорткод

API WordPress для работы с shortcode’ми очень прост: первое что надо сделать — написать PHP функцию, которая будет вызываться каждый раз, когда используется шорткод, далее — «привязать» эту функцию к определенному шорткоду. Обычно код помещают в файл functions.php но если вы имеете дело с большим количеством шорткодов, то лучше создать отдельный файл и включить его в functions.php (файловая структура WordPress плагинов).

В первом примере мы сделаем shortcode который будет генерировать текст lorem ipsum каждый раз, когда мы используем шорткод [lorem]. Сперва напишем функцию, которая возвращает текст lorem ipsum (в шорткодах не используется echo — все значения — возвращаемые):

function lorem_function() {
  return 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec nec nulla vitae lacus mattis volutpat eu at sapien. Nunc interdum congue libero, quis laoreet elit sagittis ut. Pellentesque lacus erat, dictum condimentum pharetra vel, malesuada volutpat risus. Nunc sit amet risus dolor. Etiam posuere tellus nisl. Integer lorem ligula, tempor eu laoreet ac, eleifend quis diam. Proin cursus, nibh eu vehicula varius, lacus elit eleifend elit, eget commodo ante felis at neque. Integer sit amet justo sed elit porta convallis a at metus. Suspendisse molestie turpis pulvinar nisl tincidunt quis fringilla enim lobortis. Curabitur placerat quam ac sem venenatis blandit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nullam sed ligula nisl. Nam ullamcorper elit id magna hendrerit sit amet dignissim elit sodales. Aenean accumsan consectetur rutrum.';
}

Теперь необходимо добавить шорткод в WordPress. Это позволяет сделать функция add_shortcode. Расположите её также в фале functions.php или в вашем собственном файле. Эта функция добавляет шорткод, а также связывает его с указанной в параметрах функции. У функции add_shortcode всего два аргумента: первый — имя создаваемого шорткода (то, что мы будем писать в квадратных скобках), второй — имя функции, которая будет вызвана при использовании шорткода:

add_shortcode('lorem', 'lorem_function');

Всё, мы создали шорткод и добавили его в систему WordPress 🙂

Параметры шорткода

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

[picture width="500" height="500"]

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

function random_picture($atts) {
   extract(shortcode_atts(array(
      'width' => 400,
      'height' => 200,
   ), $atts));
return '<img src="http://lorempixel.com/'. $width . '/'. $height . '" />';
}

Назовем функцию random_picture и так как наш шорткод имеет параметры у функции также появился аргумент $atts. Для того, чтобы использовать параметры шорткода нам понадобятся две функции: shortcode_atts — встроенная в WordPress функция, которая сопоставляет атрибуты шорткода с переданными и присваивает значения по-умолчанию, если это необходимо; extract — PHP функция, которая создает переменные из значений массива. Наша функция возвращает значение, которое нам необходимо, в нашем случае — HTML разметка нашего изображения с заданными значениями высоты и ширины.

Осталось только добавить шорт код в систему:

add_shortcode('picture', 'random_picture');

Шорткод готов! Каждый раз, когда мы будем использовать шорткод [picture] будет генерироваться случайное изображение с размерами 400 на 200, а если мы укажем собственные значения атрибутов картинка будет другого размера.

Хочешь получать статьи на почту?

Подпишись на обновления!
* Ваш email не будет разглашен/продан. Вы сможете отписаться в любое время.

2 Комментария

  1. Юлия:

    Спасибо за материал! Изложено просто и понятно!

  2. andron81:

    написал несложный плагин для wp.
    в самом его конце прописал shortcode:

    function sert( $atts ) {
    /*ничего особенного*/
    }

    add_shortcode( ‘sertificate_link’,’sert’ );

    а на странице просто тупо делаю так :

    [sertificate_link id=22]

    так вот выясняется , что процедура shortcode отрабатывается аш 3 раза. А хотелось бы один .

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

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