Функция объединяет переданные в шорткод атрибуты с атрибутами шорткода по умолчанию. Удаляет неподдерживаемые атрибуты.
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; }