WordPress 3.0 引入了wp_favicon_request()
来避免因每个favicon请求返回404错误页面而导致性能下降。尽管该函数可以按预期工作,但它没有提供足够的灵活性。
从WordPress 5.4开始,主题和插件作者可以使用以下逻辑更加灵活地管理favicon请求:
- 如果在外观-自定义中设置了“网站”图标,则将
/favicon.ico
请求重定向到该图标。 - 否则,请使用WordPress Logo作为默认图标。
- 如果
/favicon.ico
存在物理文件,则什么也不用做,让服务器处理该请求。
仅当WordPress安装在根目录中时,此逻辑才起作用。
通过这些更改,/favicon.ico
现在的处理与/robots.txt
请求更加一致。
建议:将你的 favicon.ico 图标上传到网站根目录,也就是 wp-config.php 文件所在的目录,一般就不会有什么问题。
新函数和钩子
WordPress 5.4引入了许多新功能和用于图标图标处理的钩子:
is_favicon()
条件标签。类似于is_robots()
。do_favicon
在模板加载器中使用的操作钩子。当模板加载程序确定网站图标请求时,将触发此钩子。和do_robots
类似 。do_favicon()
功能,默认情况下已与上述操作挂钩一起,和do_robots()
类似。do_faviconico
使插件和主题可以覆盖默认行为。显示收藏夹文件时将触发此挂钩。和动作do_robotstxt
类似。
使用上述逻辑,使用以下代码do_favicon
重定向到“网站图标”(如果存在),或重定向到WordPress Logo作为默认图标:
function do_favicon() { /** * Fires when serving the favicon.ico file. * * @since 5.4.0 */ do_action( 'do_faviconico' ); wp_redirect( get_site_icon_url( 32, admin_url( 'images/w-logo-blue.png' ) ) ); exit; }
主题和插件开发人员可以使用do_faviconico
钩子来覆盖默认行为。
弃用 wp_favicon_request()
wp_favicon_request()
现在已弃用,请使用do_favicon()
。
发表评论