wp_site_icon()
云策文档标注
概述
wp_site_icon() 函数用于在 WordPress 网站中输出站点图标的 meta 标签,支持多种尺寸,并允许通过过滤器进行自定义扩展。
关键要点
- 函数检查是否有站点图标或是否在自定义预览中,若无则直接返回。
- 生成 32x32、192x192、180x180 和 270x270 像素尺寸的图标 meta 标签,使用 get_site_icon_url() 获取 URL。
- 在自定义预览模式下,若 32x32 图标不存在,会使用默认的 /favicon.ico 路径。
- 通过 site_icon_meta_tags 过滤器允许插件添加或修改 meta 标签。
- 输出前会过滤掉空标签,确保只显示有效的 meta 标签。
代码示例
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';
}
if ( $icon_32 ) {
$meta_tags[] = sprintf( '', esc_url( $icon_32 ) );
}
// 其他尺寸类似处理
$meta_tags = apply_filters( 'site_icon_meta_tags', $meta_tags );
$meta_tags = array_filter( $meta_tags );
foreach ( $meta_tags as $meta_tag ) {
echo "$meta_tagn";
}
}注意事项
- 函数依赖于 has_site_icon() 和 get_site_icon_url() 来检查和处理图标。
- 在自定义预览中,即使没有设置图标,也会显示默认图标以确保预览功能正常。
- 使用 esc_url() 确保 URL 安全,防止 XSS 攻击。
原文内容
Displays site icon meta tags.
Source
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" 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 string[] $meta_tags Array of Site Icon meta tags.
*/
$meta_tags = apply_filters( 'site_icon_meta_tags', $meta_tags );
$meta_tags = array_filter( $meta_tags );
foreach ( $meta_tags as $meta_tag ) {
echo "$meta_tagn";
}
}
Hooks
- apply_filters( ‘site_icon_meta_tags’, string[] $meta_tags )
-
Filters the site icon meta tags, so plugins can add their own.
Changelog
| Version | Description |
|---|---|
| 4.3.0 | Introduced. |