I always thought that the current theme is saved under the “template” option.
But looking inside the “secret” /wp-admin/options.php
area, I see other related options.
In total, there are three:
- template
- stylesheet
- current_theme
In my WP installation all those three have the exact same value. I would like to know what each of those options really does and which one is storing the actual current theme name that WP uses when loading templates.
It may seem useless as a question but the point is that I am “studying” the WP architecture, and this is one of the current confusion points of the road.
All those options are actually pointing to the active theme, but the difference is the value stored in each option:
-
The options template
and stylesheet
both store the name of the active theme folder, e.g. twentytwentyone
for the Twenty Twenty-One
theme. But if you’re using a child theme, then stylesheet
would be the name of the child theme folder, e.g. twentytwentyone-child
.
-
current_theme
on the other hand (is or seems like a deprecated option which) stores the name of the active theme on the site, e.g. Twenty Twenty-One
.
And this option is used by get_current_theme()
(a deprecated function) and a deprecated option named mods_<theme name>
(see get_theme_mods()
).
And note that I don’t have this option on my site (default install of WordPress 5.7), but if I had it, then the value would be the same as what wp_get_theme()->get( 'Name' )
returns.