[wp-trac] [WordPress Trac] #20103: Rewrite get_themes() and other enemies of sanity
WordPress Trac
wp-trac at lists.automattic.com
Wed Feb 22 20:55:29 UTC 2012
#20103: Rewrite get_themes() and other enemies of sanity
--------------------------+-----------------------------
Reporter: nacin | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Themes | Version: 1.5
Severity: normal | Keywords:
--------------------------+-----------------------------
get_themes() is a memory hog (#11214). The data it returns, and how it
calculates it, is terribly designed (#15858, #12275, others) and
inflexible (#19816, others). It is not possible to translate this data.
Its aspects are poorly named (#11215). get_themes() keys things by theme
name, rather than slug, which the theme editor and other areas rely on.
Indeed, get_current_theme() and the corresponding option in the DB stores
the name.
The functions that scan (get_themes(), search_theme_directories()) are
stuck in a PHP4 world. They use globals and arrays, and one took your
lunch money. They implement unnecessary loops and directory scans, making
for very lame performance.
With get_themes(), everything is loaded at once, as there is no
opportunity for lazy-loading, even though lists of files are only needed
for the theme editor and often all we want is the current theme's
information.
Almost none of this is even remotely cacheable, certainly not sanely.
Attempts to work with this API usually lead to disaster. The theme editor
is a textbook example. It breaks on basically anything other than A-Z
(again relying on names rather than slugs), and does some really evil
things. I cleaned up what I could two years ago during my GSoC project,
but because get_themes() makes most of MU look good, little of it could
flow back into core.
Over the next few days, I will be attaching some patches that rewrite
large swaths of this aging area of core.
--
Ticket URL: <http://core.trac.wordpress.org/ticket/20103>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software
More information about the wp-trac
mailing list