shortcode_atts()

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

У меня на сайте также есть подробный урок про Шорткоды WordPress.

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;
 
}

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!