Функция shortcode_parse_atts()
в WordPress предназначена для извлечения и парсинга атрибутов, переданных в виде строки внутри шорткода. Она возвращает атрибуты в виде ассоциативного массива, где ключи представляют названия атрибутов, а значения — их значения.
shortcode_parse_atts( string $text ): array
- $text (строка) — обязательный параметр. Строка, содержащая атрибуты шорткода, в формате ключ=»значение».
- Возвращаемое значение: Массив атрибутов. Если атрибуты не указаны или строка не может быть распознана, функция возвращает пустой массив.
Когда использовать?
Эта функция полезна для работы с пользовательскими шорткодами, когда вам необходимо извлечь атрибуты и их значения, переданные в строке. Например, если вы разрабатываете шорткод и хотите получить данные из переданных параметров, shortcode_parse_atts()
— идеальный инструмент.
Пример 1: Простой парсинг строки с атрибутами
Допустим, у нас есть строка атрибутов, переданная в шорткоде, которую нужно преобразовать в массив:
$res = shortcode_parse_atts( 'module="WP" bar="" foo=\'bar\' baz bax=' );
print_r( $res );
Вывод:
Array
(
[module] => WP
[bar] =>
[foo] => bar
[0] => baz
[1] => bax=
)
Этот пример показывает, как функция парсит строку атрибутов и возвращает их в виде массива.
Пример 2: Извлечение атрибутов из шорткода
Предположим, у нас есть текст, в котором используется шорткод example_element
. Нам нужно извлечь и распарсить его атрибуты:
$str = <<<'STR'
Some content
[example_element name="important element" id="12345" foo='value']
More content
STR;
if ( ! has_shortcode( $str, 'example_element' ) ) {
echo 'Шорткод не найден';
} else {
preg_match( '~\[example_element(.+)\]~s', $str, $matches );
$res = shortcode_parse_atts( $matches[1] );
print_r( $res );
}
Вывод:
Array
(
[name] => important element
[id] => 12345
[foo] => value
)
Этот код ищет шорткод example_element
в строке, извлекает его атрибуты и выводит их как массив.
Пример 3: Парсинг строки без значения атрибутов
Вы можете передать строку, где некоторые атрибуты не имеют значений:
$res = shortcode_parse_atts( 'data="123" key value="test"' );
print_r( $res );
Вывод:
Array
(
[data] => 123
[value] => test
[0] => key
)
В данном примере атрибут key
не имеет значения, поэтому его ключ выводится как элемент массива с индексом 0
.
Пример 4: Использование с пользовательским шорткодом
Допустим, у нас есть пользовательский шорткод, который принимает параметры, и мы хотим обработать их с помощью функции shortcode_parse_atts()
:
function my_shortcode_func( $atts ) {
// Парсим атрибуты с помощью shortcode_parse_atts
$atts = shortcode_parse_atts( $atts );
// Выводим массив атрибутов
return print_r( $atts, true );
}
add_shortcode( 'my_shortcode', 'my_shortcode_func' );
// Использование шорткода
echo do_shortcode( '[my_shortcode name="custom name" id="007"]' );
Вывод:
Array
(
[name] => custom name
[id] => 007
)
Этот код регистрирует шорткод my_shortcode
, который принимает атрибуты name
и id
. С помощью функции shortcode_parse_atts()
атрибуты парсятся и выводятся в виде массива.
Заключение
Функция shortcode_parse_atts()
— это мощный инструмент для работы с атрибутами шорткодов в WordPress. Она позволяет легко преобразовывать строку атрибутов в ассоциативный массив, что упрощает обработку данных шорткода.