shortcode_atts()

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Функция объединяет переданные в шорткод атрибуты с атрибутами шорткода по умолчанию. Удаляет неподдерживаемые атрибуты.

shortcode_atts( $pairs, $atts, $shortcode = '' )
$pairs
(массив) Ассоциативный массив из списка поддерживаемых атрибутов и их значений по умолчанию. Если атрибут не присутствует в этом массиве, то он также будет удалён и из $atts. Такой своего рода белый список атрибутов. Не используйте ВЕРХНИЙ регистр или camelCase при указании атрибутов. Только нижний регистр.
$atts
(массив) Атрибуты шорткода, переданные пользователем.
$shortcode
(строка) Тег шорткода, без квадратных скобок. Используется для фильтра.

Возвращает ассоциативный массив с атрибутами.

Пример использования

print_r( 
	shortcode_atts( 
		array(
			'name' => 'Миша',
			'favorite_color' => 'unknown'
		), 
		array(
			'name' => 'Миша',
			'favorite_color' => 'black',
			'car' => 'Porsche'
		)
	)
);
// Выведет: Array ( [name] => Миша [favorite_color] => 'black' )

Фильтр shortcode_atts_{shortcode}

Функция содержит фильтр-хук, который появился в версии WordPress 3.6.0.

$out = apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts, $shortcode );

То есть по сути мы можем подменить какие-то атрибуты в массиве-результате для определённого шорткода. Давайте попробуем взять предыдущий пример и зафорсить в нём значение цвета #000, если указан цвет black. И да, допустим наш шорткод будет [about].

add_filter( 'shortcode_atts_about', 'truemisha_about_shortcode', 25, 4 );
 
function truemisha_about_shortcode( $out, $pairs, $atts, $shortcode ) {
 
	if( 'black' === $out[ 'favorite_color' ] ) {
	 	$out[ 'favorite_color' ] = '#000';
	}
	return $out;
 
}
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии