Функция shortcode_atts() в WordPress
Функция shortcode_atts() была добавлена в WordPress с версии 2.5.0 и используется для обработки атрибутов шорткодов. Она помогает объединить заданные пользователем атрибуты со стандартными атрибутами и заполнить недостающие значения по умолчанию.
Описание функции
Функция принимает три параметра:
- $pairs (массив) – список поддерживаемых атрибутов и их значений по умолчанию. Этот параметр обязателен.
- $atts (массив) – пользовательские атрибуты, указанные в теге шорткода. Этот параметр тоже обязателен.
- $shortcode (строка) – имя шорткода, которое используется для фильтрации. По умолчанию пустая строка.
Функция возвращает массив, который содержит только те атрибуты, которые указаны в $pairs. Если в списке $atts есть неподдерживаемые атрибуты, они будут проигнорированы.
Пример использования
Создание шорткода
Чтобы создать новый шорткод [bartag], который поддерживает два атрибута: foo и bar, можно использовать следующий код:
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 -
[bartag foo="koala"]выведет:bartag: koala default bar
Важные моменты
Регистр ключей массива
Следует учитывать, что регистр (верхний или нижний) ключей в массиве $pairs должен совпадать с ключами в массиве $atts. Если регистр не совпадает, значение будет проигнорировано.
Пример:
print_r( shortcode_atts( [
'CAPITAL' => '1',
'fooBar' => '2',
], [
'CAPITAL' => '3',
'fooBar' => '4',
]
) );
// Вывод: Array ( [CAPITAL] => 3 [fooBar] => 4 )
Если ключи в $atts будут написаны в нижнем регистре:
print_r( shortcode_atts( [
'CAPITAL' => '1',
'fooBar' => '2',
], [
'capital' => '3',
'foobar' => '4',
]
) );
// Вывод: Array ( [CAPITAL] => 1 [fooBar] => 2 )
Таким образом, лучше использовать строчные (нижние) буквы для ключей в массиве поддерживаемых атрибутов, чтобы избежать ошибок.
Пример реализации функции
Вот пример реализации самой функции shortcode_atts():
function shortcode_atts( $pairs, $atts, $shortcode = '' ) {
$atts = (array) $atts;
$out = array();
foreach ( $pairs as $name => $default ) {
if ( array_key_exists( $name, $atts ) ) {
$out[ $name ] = $atts[ $name ];
} else {
$out[ $name ] = $default;
}
}
if ( $shortcode ) {
$out = apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts, $shortcode );
}
return $out;
}
Заключение
Функция shortcode_atts() является полезным инструментом для работы с шорткодами в WordPress. Помня о важных моментах, таких как регистр ключей, вы сможете легко управлять атрибутами шорткодов и использовать их в своих проектах.