Интеграция шорткодов в WordPress началась с версии 2.5. Они стали одной из самых полезных особенностей этой CMS. Шорткоды существенно упрощают работу в выводе различного контента. Когда в статью или страницу вставлен шорткод с определенным ключом, он вызывает заранее созданное содержимое, которое было задано как функция PHP с определенными параметрами.
Шорткоды — это удобный способ добавлять на сайт различные элементы и функциональность с помощью простых команд в квадратных скобках []
. Для избежания конфликтов с другими шорткодами, каждому шорткоду присваивается уникальное имя.
Давайте разберемся в подробностях и посмотрим на примеры создания шорткода. С его помощью вы сможете легко вставлять на страницы и записи необходимую информацию, не прибегая к использованию плагинов.
Первый Шорткод.
Процесс создания шорткода можно разделить на две части:
- Создание функции, которая будет вызываться коротким кодом [шорткод].
- Регистрация шорткода с уникальным именем.
Шорткоды прописываются в файле functions.php. Он находится внутри вашей темы. Давайте создадим простейший шорткод, который будет выводить какую-нибудь надпись.
function new1() { return '<p>Автор: Пупкин В.</p>'; } add_shortcode ('author','new1');
Вызов: [author]
Пояснение. Пишем функцию с уникальным именем. В приме используется название «new1». Дальше прописываются двойные круглые скобки ()
— они предназначены для параметров. Открываются фигурные скопки {…}
, внутри которых создаем функцию. И в конце заканчивается функцией обработчика
add_shortcode ('короткий код для вызова', какую именно функцию вызывать');
И теперь, чтобы вызвать эту функцию, достаточно вставить короткий код [author] в любом месте вашего сайта, где нужно вывести его содержимое. В данном случае это — «Автор: Пупкин В.»
Как вывести шорткод в PHP-файле
Для того чтобы вывести шорткод в PHP-файле WordPress, вам нужно использовать функцию do_shortcode()
. Эта функция позволяет обработать шорткод и вывести его содержимое.
<?php // Вывод шорткода echo do_shortcode('[ваш шорткод]'); ?>
Поддержка шорткодов в разных местах сайта
Изначально WordPress не поддерживает шорткоды в виджетах (сайдбар). Но не беспокойтесь. Есть простое решение — добавьте всего лишь несколько строк кода в ваш файл functions.php, и вы сможете использовать шорткоды в разных разделах вашего сайта, включая виджеты.
add_filter('widget_text', 'do_shortcode');
— Поддержка в сайдбаре
add_filter( 'comment_text', 'do_shortcode' );
— Поддержка в комментариях
add_filter( 'the_excerpt', 'do_shortcode');
— Поддержка в анонсе статьи
Вывод последних постов через шорткод
Создавать функции в шорткоде можно любой сложности, все зависит от знаний. К примеру, давайте создадим вывод последней добавленной статьи.
function recent_posts_function() { query_posts(array('orderby' => 'date', 'order' => 'DESC' , 'showposts' => 1)); if (have_posts()) : while (have_posts()) : the_post(); $return_string = ''.get_the_title().''; endwhile; endif; wp_reset_query(); return $return_string; } add_shortcode('recent-posts', 'recent_posts_function');
Первым у нас идет функция и ее уникальное название recent_posts_function
. Дальше происходит обращение к базе для обратного вызова. В нашем случае — это последний добавленный пост (тут 'showposts' => 1
можно изменить количество постов) на сайте. И добавляем шорткод:
Вызов: [recent-posts]
Параметры Шорткода
Немного усложним задачу, выведем шорткод с параметром. Один из главных преимуществ шорткодов заключается в их возможности использовать параметры, что делает их еще более гибкими. Для этого нам потребуется добавить дополнительную опцию к нашему шорткоду, чтобы определить, сколько последних записей необходимо вывести.
Для реализации этой функциональности, мы будем использовать две функции. Первая из них встроенная в WordPress — shortcode_atts()
, которая объединяет атрибуты шорткода с атрибутами по умолчанию, если они не указаны. Вторая функция — extract()
, создает переменные из массива, чтобы упростить работу с атрибутами шорткода.
Давайте расширим предыдущий шорткод, добавив аргумент, который будет представлять собой массив атрибутов, чтобы получить нужное количество записей.
function recent_posts_function($atts){ extract(shortcode_atts(array( 'posts' => 1, ), $atts)); $return_string = '<ul>'; query_posts(array('orderby' => 'date', 'order' => 'DESC' , 'showposts' => $posts)); if (have_posts()) : while (have_posts()) : the_post(); $return_string .= '<li>'.get_the_title().'</li>'; endwhile; endif; $return_string .= '</ul>'; wp_reset_query(); return $return_string; } add_shortcode('recent-posts', 'recent_posts_function');
Вызов: [recent-posts posts="5"]
Примеры разных шорткодов
Давайте рассмотрим несколько интересных примеров шорткода, которые могут оказаться крайне полезными для вашего сайта. Они позволят упростить вывод информации, настроить внешний вид элементов и добавить новые функциональные возможности. Без лишних усилий вы сможете выводить различную информацию.
Карта Google.
function googlemap_function($atts, $content = null) { extract(shortcode_atts(array( "width" => '640', "height" => '480', "src" => '' ), $atts)); return '<iframe width="'.$width.'" height="'.$height.'" src="'.$src.'&output=embed" ></iframe>'; } add_shortcode("googlemap", "googlemap_function");
Вызов:
[googlemap width="600" height="300" src="http://maps.google.com/maps?q=Heraklion,+Greece&hl=en&ll=35.327451,25.140495&spn=0.233326,0.445976& sll=37.0625,-95.677068&sspn=57.161276,114.169922& oq=Heraklion&hnear=Heraklion,+Greece&t=h&z=12"]
Диаграмма Google
function chart_function( $atts ) { extract(shortcode_atts(array( 'data' => '', 'chart_type' => 'pie', 'title' => 'Chart', 'labels' => '', 'size' => '640x480', 'background_color' => 'FFFFFF', 'colors' => '', ), $atts)); switch ($chart_type) { case 'line' : $chart_type = 'lc'; break; case 'pie' : $chart_type = 'p3'; break; default : break; } $attributes = ''; $attributes .= '&chd=t:'.$data.''; $attributes .= '&chtt='.$title.''; $attributes .= '&chl='.$labels.''; $attributes .= '&chs='.$size.''; $attributes .= '&chf='.$background_color.''; $attributes .= '&chco='.$colors.''; return '<img title="'.$title.'" src="http://chart.apis.google.com/chart?cht='.$chart_type.''.$attributes.'" alt="'.$title.'" />'; } add_shortcode('chart', 'chart_function');
Вызов:
[chart type="pie" title="Example Pie Chart" data="41.12,32.35,21.52,5.01" labels="First+Label|Second+Label|Third+Label|Fourth+Label" background_color="FFFFFF" colors="D73030,329E4A,415FB4,DFD32F" size="450x180"]
Контент только для зарегистрированных
function cwc_member_check_shortcode( $atts, $content = null ) { if ( is_user_logged_in() && !is_null( $content ) && !is_feed() ) return $content; return ''; } add_shortcode( 'member', 'cwc_member_check_shortcode' );
Вызов: [member]Этот текст увидит только зарегистрированный пользователь.[/member]
Встраивание PDF
function pdf_function($attr, $url) { extract(shortcode_atts(array( 'width' => '640', 'height' => '480' ), $attr)); return '<iframe src="http://docs.google.com/viewer?url=' . $url . '&embedded=true" style="width:' .$width. '; height:' .$height. ';">Your browser does not support iframes</iframe>'; } add_shortcode('pdf', 'pdf_function');
Вызов:
[pdf width="520px" height="700px"]http://static.fsf.org/common/what-is-fs-new.pdf[/pdf]
Плагины для Шорткодов
В заключение, давайте рассмотрим один из самых популярных плагинов Shortcodes Ultimate, который значительно упростит работу с шорткодами. Он позволят легко создавать и настраивать шорткоды согласно вашим предпочтениям и требованиям.
Здравствуйте!
Подскажите, пожалуйста, как ввернуть в тело шоткода проверку на пустой аттрибут?
Например, есть аттрибуты: name1, name2, name3
Вывод:
Раз: ' . $name2 . ', Два: ' . $name1 . ', Три: ' . $name3 . '
Как сделать проверку, что, если name1 пустой, то "Раз: ' . $name2 . ', " не выводить?
Заранее спасибо!
День добрый. Это делается с помощью условия if у вас есть какие-нибудь навыки в php?
Блин, я перечитала свой коммент и ужаснулась: всё перепутала. 🙂
Поправочки:
*
Раз: ' . $name1 . ', Два: ' . $name2 . ', Три: ' . $name3 . '
*
если name1 пустой, то "Раз: ' . $name1 . ', " не выводить
Вот. 🙂
А не в курсе если тема старая и не поддерживает шорткоды, что делать? В functions.php что-то нужно прописать?
Ксения, смотря где вставляете шорткод, к примеру, в сайдбаре, то да. А так нет.