Bootstrap/Load: Make handling the /favicon.ico
requests more flexible.
Previously, wp_favicon_request()
was introduced in [13205] to avoid a performance hit of serving a full 404 page on every favicon request.
While working as intended, that implementation did not provide a way for theme or plugin authors to manage the behavior of favicon requests.
This changeset implements the following logic (only applied if WordPress is installed in the root directory):
- If there is a Site Icon set in Customizer, redirect
/favicon.ico
requests to that icon.
- Otherwise, use the WordPress logo as a default icon.
- If a physical
/favicon.ico
file exists, do nothing, let the server handle the request.
Handling /favicon.ico
is now more consistent with handling /robots.txt
requests.
New functions and hooks:
- Introduce
is_favicon()
conditional tag to complement is_robots()
.
- Introduce
do_favicon
action to complement do_robots
and use it in template loader.
- Introduce
do_favicon()
function, hooked to the above action by default, to complement do_robots()
.
- Introduce
do_faviconico
action to complement do_robotstxt
, for plugins to override the default behavior.
- Mark
wp_favicon_request()
as deprecated in favor of do_favicon()
.
Props jonoaldersonwp, birgire, joostdevalk, mukesh27, SergeyBiryukov.
Fixes #47398.