WordPress как на ладони
wordpress jino

wp_site_icon() WP 4.3.0

Выводит на экран мета тег иконки сайта: <link rel="icon" href="%s" sizes="32x32" />

Выводит 4 метатега для разных устройств:

<link rel="icon" href="%s" sizes="32x32" />
<link rel="icon" href="%s" sizes="192x192" />
<link rel="apple-touch-icon-precomposed" href="%s">
<meta name="msapplication-TileImage" content="%s">

Функция используется в фильтре WP по умолчанию, с версии 4.3:

add_action( 'wp_head', 'wp_site_icon', 99 );

Перед выводом кода, функция проверяет установлена ли вообще иконка для сайта. Проверка есть иконка или нет, по сути сводиться к проверке есть опция или нет...

ID вложения иконки сайта храниться в опции 'site_icon':

// для MU
$site_icon_id = get_blog_option( $blog_id, 'site_icon' );
// обычная установка
$site_icon_id = get_option( 'site_icon' );
Работает на основе: get_site_icon_url(), has_site_icon()
Хуки из функции:
Возвращает

Ничего. Выводит на экран HTML код.

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

wp_site_icon();

Примеры

#1 Демонстрация работы

Допустим мы установили иконку для сайта во: Внешний вид > Настроить > Свойства сайта, тогда следующий код сработает так:

wp_site_icon();

/* выведет:
<link rel="icon" href="http://wptest.ru/wp-content/uploads/2015/07/cropped-gorchitca___-32x32.jpg" sizes="32x32" />
<link rel="icon" href="http://wptest.ru/wp-content/uploads/2015/07/cropped-gorchitca___-192x192.jpg" sizes="192x192" />
<link rel="apple-touch-icon-precomposed" href="http://wptest.ru/wp-content/uploads/2015/07/cropped-gorchitca___-180x180.jpg">
<meta name="msapplication-TileImage" content="http://wptest.ru/wp-content/uploads/2015/07/cropped-gorchitca___-270x270.jpg">
*/

#2 Отключим вывод иконки сайта, если она установлена

Для этого впишем этот код в файл темы functions.php:

remove_action('wp_head', 'wp_site_icon', 99 );

Код wp site icon: wp-includes/general-template.php WP 4.8.2

<?php
function wp_site_icon() {
	if ( ! has_site_icon() && ! is_customize_preview() ) {
		return;
	}

	$meta_tags = array();
	$icon_32 = get_site_icon_url( 32 );
	if ( empty( $icon_32 ) && is_customize_preview() ) {
		$icon_32 = '/favicon.ico'; // Serve default favicon URL in customizer so element can be updated for preview.
	}
	if ( $icon_32 ) {
		$meta_tags[] = sprintf( '<link rel="icon" href="%s" sizes="32x32" />', esc_url( $icon_32 ) );
	}
	$icon_192 = get_site_icon_url( 192 );
	if ( $icon_192 ) {
		$meta_tags[] = sprintf( '<link rel="icon" href="%s" sizes="192x192" />', esc_url( $icon_192 ) );
	}
	$icon_180 = get_site_icon_url( 180 );
	if ( $icon_180 ) {
		$meta_tags[] = sprintf( '<link rel="apple-touch-icon-precomposed" href="%s" />', esc_url( $icon_180 ) );
	}
	$icon_270 = get_site_icon_url( 270 );
	if ( $icon_270 ) {
		$meta_tags[] = sprintf( '<meta name="msapplication-TileImage" content="%s" />', esc_url( $icon_270 ) );
	}

	/**
	 * Filters the site icon meta tags, so Plugins can add their own.
	 *
	 * @since 4.3.0
	 *
	 * @param array $meta_tags Site Icon meta elements.
	 */
	$meta_tags = apply_filters( 'site_icon_meta_tags', $meta_tags );
	$meta_tags = array_filter( $meta_tags );

	foreach ( $meta_tags as $meta_tag ) {
		echo "$meta_tag\n";
	}
}

Cвязанные функции

Из раздела: Другие функции темы

wp_site_icon 4 комментария

Здравствуйте, !

Ваш комментарий