wp_get_icon()WP 7.1.0

Получает HTML зарегистрированной SVG иконки.

Иконка должна быть предварительно зарегистрирована через wp_register_icon().

A11y: Если задана доступная подпись, иконка получает атрибуты role="img" и aria-label. Без подписи иконка считается декоративной и скрывается от программ чтения с экрана.

1 раз — 0.0006881 сек (медленно) | 50000 раз — 2.02 сек (быстро) | PHP 8.2.28, WP 7.1

Хуков нет.

Возвращает

Строку.

  • строку - HTML SVG-иконки.
  • '' - если иконка не зарегистрирована, содержимое пустое или тег <svg> не найден.

Использование

wp_get_icon( $name, $args );
$name(string) (обязательный)
Полное имя иконки в формате коллекция/иконка. Например: core/plus, core/arrow-down, my-plugin/custom-icon.
$args(array)

Параметры отображения иконки.

По умолчанию: []

  • size(int|null)
    Ширина и высота иконки в пикселях. Значение null сохраняет исходные размеры SVG.
    По умолчанию: 24

  • class(string)
    Дополнительные CSS-классы тега <svg>. Несколько классов разделяются пробелами.
    По умолчанию: ''

  • label(string)
    Доступная подпись иконки.

    Если указана, тег <svg> получает role="img" и aria-label. Атрибуты aria-hidden и focusable удаляются.

    Если не указана, функция добавляет aria-hidden="true" и focusable="false", а также удаляет role и aria-label.
    По умолчанию: ''

Примеры

#1 Вывод декоративной иконки

Выведем встроенную иконку размером 24 пикселя. Она будет скрыта от программ чтения с экрана.

echo wp_get_icon( 'core/plus' );

Получим:

<svg aria-hidden="true" focusable="false" height="24" width="24" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
	<path d="M11 12.5V17.5H12.5V12.5H17.5V11H12.5V6H11V11H6V12.5H11Z" />
</svg>

#2 Иконка с подписью и CSS-классом

Выведем иконку размером 32 пикселя с доступной подписью.

echo wp_get_icon( 'core/plus', [
	'size'  => 32,
	'class' => 'button-icon',
	'label' => __( 'Add item', 'my-plugin' ),
] );

Чтобы отдельная иконка наследовала цвет текста, можно задать fill: currentColor:

.button-icon {
	fill: currentColor;
}

Список изменений

С версии 7.1.0 Введена.

Код wp_get_icon() WP 7.1

function wp_get_icon( $name, $args = array() ) {
	$icon = WP_Icons_Registry::get_instance()->get_registered_icon( $name );
	if ( is_null( $icon ) ) {
		return '';
	}

	$svg = $icon['content'];
	if ( empty( $svg ) ) {
		return '';
	}

	$args = wp_parse_args(
		$args,
		array(
			'size'  => 24,
			'class' => '',
			'label' => '',
		)
	);

	$processor = new WP_HTML_Tag_Processor( $svg );
	if ( ! $processor->next_tag( 'svg' ) ) {
		return '';
	}

	if ( is_numeric( $args['size'] ) ) {
		$size = absint( $args['size'] );
		$processor->set_attribute( 'width', (string) $size );
		$processor->set_attribute( 'height', (string) $size );
	}

	if ( ! empty( $args['class'] ) ) {
		foreach ( preg_split( '/\s+/', $args['class'], -1, PREG_SPLIT_NO_EMPTY ) as $class_name ) {
			$processor->add_class( $class_name );
		}
	}

	if ( ! empty( $args['label'] ) ) {
		$processor->set_attribute( 'role', 'img' );
		$processor->set_attribute( 'aria-label', $args['label'] );
		$processor->remove_attribute( 'aria-hidden' );
		$processor->remove_attribute( 'focusable' );
	} else {
		$processor->set_attribute( 'aria-hidden', 'true' );
		$processor->set_attribute( 'focusable', 'false' );
		$processor->remove_attribute( 'role' );
		$processor->remove_attribute( 'aria-label' );
	}

	return $processor->get_updated_html();
}