site_icon_meta_tags
Позволяет изменить/расширить список 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[])
- Массив мета-тегов сайт-иконки.
Примеры
#1 Удалим метатег apple-touch-icon из head части HTML сайта
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 | Введена. |
Где вызывается хук
site_icon_meta_tags
wp-includes/general-template.php 3619
$meta_tags = apply_filters( 'site_icon_meta_tags', $meta_tags );