add_shortcode()
Добавляет новый шорткод.
Синтаксис и параметры
add_shortcode( $tag , $func )
Показать код
- $tag
- Строка. Обязательный. Значение по умолчанию: нет.
- Название добавляемого шорткода. В названии нельзя использовать пробелы и следующие спец. символы: & / < > [ ] = или непечатаемые символы от \x00 до \x20. И не рекомендуется использовать одинарные или двойные кавычки.
- $func
- Функция или массив. Обязательный. Значение по умолчанию: нет.
- Имя функции, которая будет вызвана, если в тексте будет найден данный шорткод. Если шорткод используется вместе с классом, то этот параметр может быть массивом.
Возвращаемые значения
Функция ничего не возвращает.
Заметки
В вызываемую функцию будет передано 3 аргумента: атрибуты шорткода, содержание шорткода (если есть) и имя шорткода.
Для каждого шорткода может быть определена только одна функция обратного вызова. Это означает, что если в каком-то плагине или шаблоне будет определен шорткод в таким же названием как ваш, то чья будет запущена функция - вашего шорткода или из того плагина, неизвестно никому и зависит от порядка подключения плагинов (будет выполнена та функция, которая подключается последней). Отсюда вывод - давайте вашим шорткодам уникальные имена.
Имена атрибутов шорткода при передаче в функцию всегда преобразуются в строчные буквы. Значения атрибутов при передаче не изменяются.
Функция, которая вызывается шорткодом, никогда не должна выводить на экран какой-либо результат, а только возвращать текст, который будет использоваться для замены шорткода. Иначе это может привести к неожиданным результатам. То есть никакого вывода на экран через echo быть не должно. А если вам такой вывод в вашей функции все же нужен, то оборачивайте его ob_start() и ob_get_clean() (см. примеры ниже).
Примеры
1. Простой шорткод без параметров
add_shortcode( 'test', function() {
// что-то делаем
$out = 5;
return $out;
} );
Показать код
Вызывается так: [test]
2. Шорткод с параметрами
add_shortcode( 'test', function( $atts ) {
extract( $atts);
$out = $param1 + $param2;
return $out;
} );
Показать код
Вызывается так: [test param1=100 param2=200]
Вместо param1 и param2 могут быть любые другие имена параметров. Просто тогда в функции шорткода надо использовать те же имена переменных.
3. Шорткод с параметрами и значениями по умолчанию.
add_shortcode( 'test', function( $atts, $content = null ) {
extract( shortcode_atts( array(
'color' => 'red',
'size' => 'medium',
'background' => '#ddd'
), $atts ) );
return "<span style='color: $color; font-size: $size; background: $background;'>$content</span>";
} );
Показать код
Вызывать шорткод можно как без параметров [test]выделенный текст[/test]
, тогда будут использованы параметры по умолчанию, так и с любым количеством используемых параметров (от 1 до 3): [test color="blue"]выделенный текст[/test]
.
4. Шорткод с выводом на экран.
<?php
add_shortcode( 'test', function() {
ob_start(); ?>
<div>
<p>Вывод на экран чего угодно</p>
</div> <?
$out = ob_get_clean();
return $out;
} );
Показать код
Поскольку внутри функции шорткода нельзя делать вывод на экран напрямую (например, через echo), то мы через буферизацию вывода (PHP функции ob_start() и ob_get_clean()) собираем все, что надо вывести на экран в единый кусок текста и уже его возвращаем из шорткода. Удобно использовать, когда из шорткода надо вернуть не просто строчку текста, а большой кусок HTML-кода.
5. Использование шорткода вместе с классом.
class MyClass {
function my_func( $atts, $content = '' ) {
return "content = $content";
}
}
add_shortcode( 'test', array( 'MyClass', 'my_func' ) );
Показать код