Здравствуйте, уважаемые читатели XoZbloga. WordPress дает разработчику широкий спектр инструментов для организации удобной работы с системой. Одним из таких инструментов является Shortcode API, простой набор функций для создания макро-кодов, используемых в тексте записей на блоге.
Что такое Шорткод (Shortcode)?
Короткие коды были введены в WordPress 2.5. Шорткод можно представить как ярлык исполняемого файла в Windows, который ссылается непосредственно на .exe файл. Так же и здесь, можно один раз описать исполняемый код, который будет вызываться через шорткод из статьи или шаблона. Допустим, Вы написали функцию которая возвращает список самых популярных статей в какой-либо категории и создали шорткод для ее вызова, теперь в любом месте на сайте вы можете использовать вот такую конструкцию [most_popular_post category=»Бизнес»], для вывода этого списка. Данная возможность позволяет значительно экономить время при использовании WordPress.
Как создается Шорткод?
Короткие коды работают как фильтры WordPress, принимают параметры (атрибуты) и возвращают некий обработанный результат. Для этого: Вы должны определить функцию обработчика, которая анализирует shortcode и возвращает результат обработки. Затем зарегистрировать shortcode (вызывающий функцию обработчик) с помощью функции add_shortcode(‘name_shortcode’,’name_func’), которая принимает 2 атрибута:
- ‘name_shortcode’ — название шорткода;
- ‘name_func’ — название функции обработчика.
Функция обработчика принимает до трех аргументов, перечисленных ниже:
- $atts — массив с атрибутами (и значениями) шорткода (например [myshortcode id=»1″]);
- $content — Любое содержимое, которое находится в ограничении шорткода (например [myshortcode]Здесь, то самое содержимое[/myshortcode]);
- $tag — используется обычно тогда, когда один и тот же обработчик используется для нескольких коротких кодов.
Давайте разберем на нескольких примерах, как могли бы выглядеть эти аргументы:
1 | [myshortcode] |
- $atts = array()
- $content = null
1 | [myshortcode]Обычный контент статьи...[/myshortcode] |
- $atts = array()
- $content = Обычный контент статьи…
1 | [myshortcode id="555" name="Имя"] |
- $atts = array(‘id’ => ‘555’, ‘name’ => ‘Имя’)
- $content = null
1 | [myshortcode id="555" name="Имя"]Обычный контент статьи...[/myshortcode] |
- $atts = array(‘id’ => ‘555’, ‘name’ => ‘Имя’)
- $content = Обычный контент статьи…
Создание шорткода WordPress с параметрами
И так, теперь можно перейти к более менее, наглядному созданию простенького шорткода. Допустим, нам необходимо получить список последних статей в указанной категории. Создадим функцию обработчика в файле function.php активной темы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | function display_latest_post($atts) { // Получаем значения атрибутов // если значения не были указаны определяем свои extract( shortcode_atts( array( 'numberofpost' => '3', // количество запрашиваемых записей 'categoryid' => '', // id категории ), $atts ) ); // объявляем переменную для возврата $result = ''; // формируем текст запроса $querystring = 'posts_per_page='.$numberofpost; if(strlen($categoryid) > 0) $querystring .= '&cat='.$categoryid; // выполняем запрос $query = new WP_Query( $querystring ); // Цикл, пока есть записи while ( $query->have_posts() ) : $query->the_post(); // формируем список $result.= '<li>'; $result.= '<a href="'.get_permalink().'">'.get_the_title().'</a>'; $result.= '</li>'; endwhile; // После цикла, восстанавливаем текущую запись в $post wp_reset_postdata(); // Возвращаем результат - список return $result; } // регистрируем шорткод add_shortcode( 'dlp', 'display_latest_post' ); |
Пора использовать, только что созданный шорткод. Вставляем его в статью с указанием атрибутов и смотрим результат:
Обработка контента
Пример с обработкой контента. Чаще всего приходится добавлять дополнительную разметку, например чтобы выделить абзац текста (добавить фон, изменить цвет текста и тд.). Допустим в стилях уже определен класс для выделения текста:
1 2 3 4 5 6 | .content_info { background: #ccc url("images.png") no-repeat 20px 50%; border: 1px solid #666; padding: 10px; margin: 5px; } |
Обработчик выглядит так:
1 2 3 4 5 | function content_info_function($attr,$content = null) { return '<div class="content_info">'.$content.'</div>'; } // регистрируем шорткод add_shortcode( 'info', 'content_info_function' ); |
Использование шорткодов
Итак, создавать shortcodes WordPress научились, теперь о том как их использовать при работе. Конечно можно не загружаться и писать все ручками, но такой способ подходит если используется шорткод в статье один или два раза, а если больше?! А если больше, то лучшим выходом будет создать кнопочку в редакторе, для вызова шорткода. Для этой цели я пользуюсь плагином AddQuicktag — http://wordpress.org/extend/plugins/addquicktag/
Первая колонка имя кнопки, потом заголовок кнопки, далее идет поле для ввода шорткода или просто разметки и следом за ним поля для закрывающегося шорткода или разметки. Можно также настроить отображение кнопок, есть инструмент экспорт/импорт настроек.
Использование шорткода в теме
До сих пор мы рассматривали использование шорткода в тексте статьи. Но мы также можем использовать shortcode в шаблонах или как часть функции в плагине. Это можно сделать с помощью функции do_shortcode.
Do_shortcode принимает в качестве аргумента название шорткода. Используется данная функция с конструкцией echo:
1 | <?php echo do_shortcode('[myshortcode]'); ?> |
Другие полезные функции WordPress Shortcode
На последок, давайте рассмотрим несколько полезных функций, связанных с шорткодами.
- remove_shortcode(‘myshortcode’) — Эта функция удаляет шорткод, который ранее был добавлена с помощью add_shortcode. В качестве аргумента название шорткода.
- remove_all_shortcodes() — Эта функция удаляет все шорткоды.
- strip_shortcodes($content) — Эта функция удаляет все шорткоды из контента, который был передан в качестве параметра. Эта функция может быть полезна в случае, если вы хотите убрать короткие коды с определенной страницы и тд.
Вот пример функции, которая очищает контент от шорткодов на главной странице:
1 2 3 4 5 6 7 8 9 10 | function remove_shortcode_from_index($content) { // если это главная страница if ( is_home() ) { // очищаем контент от коротких кодов $content = strip_shortcodes( $content ); } return $content; } // добавляем фильтр add_filter('the_content', 'remove_shortcode_from_index'); |
Чтобы оставаться в курсе свежих статей и уроков следите за XoZblog в Facebook или добавляйте в круги на Google+. Не забывайте оставлять комментарии к статьям и урокам. Спасибо!
Источник статьи/урока: https://xozblog.ru