site_icon_meta_tags │ хук-фильтр │ WP 4.3.0

Click here to view original web page at wp-kama.ru

Позволяет изменить/расширить список HTML метатегов для иконки сайта.

Так, плагины могут дополнять или заменять метатеги иконки сайта для разных устройств.

По умолчанию WP добавляет следующие размеры картики указанной как иконка сайта, в Кастомайзере - см. get_site_icon_url():

<link rel="icon" href="{URL}" sizes="32x32" />
<link rel="icon" href="{URL}" sizes="192x192" />
<link rel="apple-touch-icon" href="{URL}" />
<meta name="msapplication-TileImage" content="{URL}" />

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

add_filter( 'site_icon_meta_tags', 'wp_kama_site_icon_meta_tags_filter' );

/**
 * Function for `site_icon_meta_tags` filter-hook.
 * 
 * @param string[] $meta_tags Array of Site Icon meta tags.
 *
 * @return string[]
 */
function wp_kama_site_icon_meta_tags_filter( $meta_tags ){

	// filter...
	return $meta_tags;
}
$meta_tags(string[])
Массив мета-тегов сайт-иконки.

Примеры

add_filter( 'site_icon_meta_tags', 'wpkama_remove_site_apple_touch_icon', 0 );

/**
 * Remove `apple-touch-icon` added by WordPress in HTML head.
 *
 * Callback for `site_icon_meta_tags` hook.
 *
 * @param string[] $meta_tags Array of Site Icon meta tags.
 *
 * @return string[] Array where the Apple Touch Icons removed.
 */
function wpkama_remove_site_apple_touch_icon( $meta_tags ) {
	if ( is_customize_preview() && is_admin() ) {
		return $meta_tags;
	}

	foreach ( $meta_tags as $key => $value ) {
		if ( strpos( $value, 'apple-touch-icon' ) ) {
			unset( $meta_tags[ $key ] );
		}
	}

	return $meta_tags;
}

#2 Добавим дополнительные иконки в список иконок сайта

Допустим мы в настройках темы (см. get_theme_mod()) создали поля, где можно указать разные иконки для разных типов приложений и нам нужно заменить существующую иконку.

add_filter( 'site_icon_meta_tags', 'wpkama_replace_site_icons' );

/**
 * Replace site icons with custom ones.
 *
 * @param array $meta_tags The default meta tags.
 *
 * @return array
 */
function wpkama_replace_site_icons( $meta_tags ) {

	$is_enabled = get_theme_mod( 'override_icon' );
	if ( ! $is_enabled ) {
		return $meta_tags;
	}

	$android_icon_url = wp_get_attachment_image_src( (int) get_theme_mod( 'android_icon' ) )[0] ?? null;
	$ios_icon_url     = wp_get_attachment_image_src( (int) get_theme_mod( 'ios_icon' ) )[0] ?? null;
	$windows_icon_url = wp_get_attachment_image_src( (int) get_theme_mod( 'windows_icon' ) )[0] ?? null;

	foreach ( $meta_tags as $index => $value ) {

		if ( $android_icon_url && strpos( $value, '192x192' ) ) {
			$meta_tags[ $index ] = sprintf( '<link rel="icon" href="%s" sizes="192x192" />', esc_url( $android_icon_url ) );
		}

		if ( $ios_icon_url && strpos( $value, 'apple-touch-icon-precomposed' ) ) {
			$meta_tags[ $index ] = sprintf( '<link rel="apple-touch-icon-precomposed" href="%s" />', esc_url( $ios_icon_url ) );
		}

		if ( $windows_icon_url && strpos( $value, 'msapplication-TileImage' ) ) {
			$meta_tags[ $index ] = sprintf(
				'<meta name="msapplication-config" content="none"><meta name="msapplication-TileImage" content="%s" />',
				esc_url( $windows_icon_url )
			);
		}
	}

	return $meta_tags;
}

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

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

Где вызывается хук

wp_site_icon()

site_icon_meta_tags

wp-includes/general-template.php 3446

$meta_tags = apply_filters( 'site_icon_meta_tags', $meta_tags );

Где используется хук в WordPressИспользование не найдено.