Интеграция шорткодов в 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 что-то нужно прописать?
Ксения, смотря где вставляете шорткод, к примеру, в сайдбаре, то да. А так нет.