[Font API] Do not print in admin using 'admin_print_styles' for themes with theme.json #50259
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #50064
What?
Adds decision making around hooking into
'admin_print_styles'
: If a theme does not have atheme.json
file, then hook into the action; else, do not.Why?
Prior to this PR, hooking into this action caused the fonts to be printed twice for theme's with a
theme.json
file.Why?
Fonts are printed via the iframed editor assets functionality which directly invokes
wp_print_fonts()
. So instead of being in the main web page's<head>
, the fonts are printed into theiframe
.For theme's without a
theme.json
file, there is no iframed editor. Thus, the hook registration is needed to print the fonts into the admin.How?
wp_fonts()
initialization code. No need to hook ifwp_fonts()
is never called.theme.json
is being used. If yes, then hooks into 'admin_print_styles'.Testing Instructions
Set up on your test site:
Test in the admin:
wp-fonts-local
<style>
element.Expected: The element should not exist.
wp-fonts-local
<style>
element.Expected: The element should not be in the main document's
<head>
. Rather, it should only be in theiframe
.wp-fonts-local
<style>
element.Expected: The element should not be in the main document's
<head>
. Rather, it should only be in theiframe
.Test in the front-end:
wp-fonts-local
<style>
element.Expected: The element should be in the main document's
<head>
.Screenshots or screencast
Non-block editor admin area
Site Editor:
In a Post:
In the front-end: