[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.jsonfile, 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.jsonfile.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.jsonfile, 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.jsonis 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:
