Хук site_icon_meta_tags
в WordPress позволяет разработчикам изменять или дополнять список метатегов, отвечающих за отображение иконки сайта. Этот фильтр особенно полезен для добавления кастомных иконок для различных устройств или приложений, таких как iOS, Android и Windows.
apply_filters( ‘site_icon_meta_tags’, string[] $meta_tags )
WordPress по умолчанию генерирует стандартные метатеги для отображения иконки сайта на разных платформах. Список по умолчанию включает следующие метатеги:
<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}" />
Хук site_icon_meta_tags
позволяет модифицировать этот массив метатегов, добавляя новые или удаляя ненужные элементы.
Параметры
$meta_tags
(массив строк): Массив строк, содержащих HTML-код метатегов иконки сайта.
Пример 1: Удаление метатега apple-touch-icon
из HTML-головы сайта
Этот пример показывает, как убрать метатег apple-touch-icon
из блока <head>
сайта, чтобы предотвратить его загрузку на устройствах Apple.
function remove_apple_touch_icon($meta_tags) {
foreach ($meta_tags as $key => $tag) {
if (strpos($tag, 'apple-touch-icon') !== false) {
unset($meta_tags[$key]);
}
}
return $meta_tags;
}
add_filter('site_icon_meta_tags', 'remove_apple_touch_icon');
Здесь apple-touch-icon
удаляется из массива $meta_tags
, что приводит к исключению этого метатега из HTML.
Пример 2: Добавление кастомных иконок для разных платформ
В данном примере добавляются кастомные иконки для Android, iOS и Windows, которые были загружены через настройки темы.
function add_custom_site_icons($meta_tags) {
// Получаем URL кастомных иконок из настроек темы
$android_icon = wp_get_attachment_image_url(get_theme_mod('android_icon_id'), 'full');
$ios_icon = wp_get_attachment_image_url(get_theme_mod('ios_icon_id'), 'full');
$windows_icon = wp_get_attachment_image_url(get_theme_mod('windows_icon_id'), 'full');
if ($android_icon) {
$meta_tags[] = '<link rel="icon" href="' . esc_url($android_icon) . '" sizes="192x192" />';
}
if ($ios_icon) {
$meta_tags[] = '<link rel="apple-touch-icon" href="' . esc_url($ios_icon) . '" />';
}
if ($windows_icon) {
$meta_tags[] = '<meta name="msapplication-TileImage" content="' . esc_url($windows_icon) . '" />';
}
return $meta_tags;
}
add_filter('site_icon_meta_tags', 'add_custom_site_icons');
Этот код добавляет кастомные иконки, если в настройках темы указаны их идентификаторы.
Пример 3: Замена иконки для определенных размеров
Этот пример показывает, как заменить иконку для конкретных размеров. Например, если вы хотите заменить иконку 192x192
на новую, заданную в настройках темы.
function replace_site_icon($meta_tags) {
$new_icon_url = wp_get_attachment_image_url(get_theme_mod('custom_icon_192'), 'full');
foreach ($meta_tags as &$tag) {
if (strpos($tag, '192x192') !== false && $new_icon_url) {
$tag = '<link rel="icon" href="' . esc_url($new_icon_url) . '" sizes="192x192" />';
}
}
return $meta_tags;
}
add_filter('site_icon_meta_tags', 'replace_site_icon');
В этом примере ищется и заменяется метатег с размером 192x192
на новую иконку из настроек темы.
Пример 4: Добавление метатегов для тёмного режима
Здесь добавляется условный метатег, который указывает иконку для тёмного режима интерфейса.
function add_dark_mode_icon($meta_tags) {
$dark_mode_icon = wp_get_attachment_image_url(get_theme_mod('dark_mode_icon'), 'full');
if ($dark_mode_icon) {
$meta_tags[] = '<link rel="icon" href="' . esc_url($dark_mode_icon) . '" media="(prefers-color-scheme: dark)" sizes="32x32" />';
}
return $meta_tags;
}
add_filter('site_icon_meta_tags', 'add_dark_mode_icon');
Этот пример добавляет иконку для тёмного режима, если пользовательские настройки содержат URL этой иконки.
Пример 5: Удаление всех иконок с определенного типа страниц
В этом примере показывается, как удалить все иконки на страницах с определенным типом контента, например, на страницах с кастомными постами.
function remove_icons_on_custom_posts($meta_tags) {
if (is_singular('custom_post_type')) {
return []; // Очищаем массив иконок для страниц с кастомными постами
}
return $meta_tags;
}
add_filter('site_icon_meta_tags', 'remove_icons_on_custom_posts');
Здесь иконки полностью отключаются на страницах с кастомными постами.
Заключение
Хук site_icon_meta_tags
в WordPress предоставляет мощные возможности для настройки иконок сайта на различных устройствах и платформах. С его помощью можно добавить кастомные метатеги, адаптировать иконки под различные условия (например, темный режим или специфические страницы), а также заменить стандартные иконки на пользовательские.