shortcode_atts()
Обрабатывает атрибуты (параметры) шорткода: добавляет значения по умолчанию когда нужно и удаляет неподходящие атрибуты.
Результат будет содержать ключи из значения атрибутов из параметра $atts, которые есть в параметре $pairs. Т.е. $pairs — это параметры по умолчанию, а $atts передаваемые параметры. В передаваемых параметрах не может быть ключей, которых нет в дефолтных. Это, своего рода, белый список атрибутов шорткода.
Читайте обязательно: Создание шорткода в WordPress
Видео о шорткодах
Хуки из функции
Возвращает
array. Собранный и отфильтрованный список атрибутов.
Использование
shortcode_atts( $pairs, $atts, $shortcode );
- $pairs(массив) (обязательный)
Ассоциативный массив который описывает возможные атрибуты шорткода (это ключи массива) и их дефолтные значения.
ВАЖНО! Ключи массива
$defaultsдолжны быть вlower-case. Не используйтеcamelCaseилиUPPER-CASE, потому что в$attsключи всегда вlower-case.- $atts(массив) (обязательный)
Неочищенный массив с данными, которые были указаны в шорткоде. Они будут сравниваться с массивом выше.
$attsбудет содержать массив аргументов шорткода, которые были указанны пользователем.Если указать значение без названия параметра, то они будут добавлены в индексные элементы массива. Например для шорткода
[name value attr="val2" val3]получим:[ [0] => value [attr] => val2 [1] => val3 ]
Имена атрибутов (ключи массива
$atts) всегда конвертируются в lower-case (нижний регистр), значения никак не обрабатываются. Например, если мы указали шорткод так[myshortcode FOO="BAR"], то в$attsполучим[ 'foo' => 'BAR' ].- $shortcode(строка)
Название шоткода, который будет использоваться в фильтре: shortcode_atts_{$shortcode}.
С версии 3.6. передает параметр
$attsв фильтрshortcode_atts_{$shortcode}, если указан параметр$shortcode.По умолчанию: ''
Примеры
#1 Добавление шорткода
Создадим новый шоткод [bartag] с атрибутами foo и bar: [bartag foo="something" bar="something else"]
add_shortcode( 'bartag', 'shortcode_callback' );
function shortcode_callback( $atts ) {
$atts = shortcode_atts( [
'foo' => 'no foo',
'bar' => 'default bar',
], $atts, 'bartag' );
return 'bartag: ' . esc_html($atts['foo']) . ' ' . esc_html($atts['bar']);
}
// в результате шоткод: [bartag foo="koala" bar="bears"]
// выведет: bartag: koala bears
Оба атрибута шоткода произвольные и если они не указаны в шоткоде, то будут содержать значения по умолчанию.
Список изменений
| С версии 2.5.0 | Введена. |