Make WordPress Core

Opened 18 years ago

Closed 18 years ago

#2525 closed defect (bug) (fixed)

Restructure wp-includes

Reported by: ryan's profile ryan Owned by: ryan's profile ryan
Milestone: 2.1 Priority: normal
Severity: normal Version: 2.0.1
Component: Administration Keywords: includes
Focuses: Cc:


Our includes are rather chaotic. functions.php has turned into a dumping ground for everything. Let's impose some structure.

  • Database Query - Move get, set, update, add, delete functions together into one db.php file or break them into category-db.php, option-db.php, post-db.php, bookmark-db.php, etc.
  • WP Query - Move WP_Query class and all of the functions that wrap the wp_query object (is_*() and the loop functions) into query.php.
  • Theme, Stylesheet, Template - Move all of the theming related functions to theme.php.
  • Plugin - Move action and filter functions to plugin.php.
  • Rewrite/Link - Move WP_Rewrite and supporting functions into rewrite.php.
  • Misc - Leave what's left in functions.php.

I'd like to rename existing files while we're at it. The "-functions" suffix and "functions-" prefix aren't necessary. Let's try a three tier naming approach for the bookmark, category, option, post, page, and user functions.

  • object-template.php - Template functions
  • object-helper.php - Helper funcs for the template funcs
  • object-db.php - DB functions that do the get and the set.

We'd have these for each of our objects (bookmarks, categories, ...). Helper functions would be the middle men between the template and db functions. We may not need separate files for helper funcs.

Attachments (3)

theme-funcs.diff (24.1 KB) - added by ryan 18 years ago.
Moves template, stylesheet, theme fxns to theme.php
comment-funcs.diff (76.8 KB) - added by ryan 18 years ago.
Move comment functions into comment.php and comment-template.php
wp-settings.php.diff (678 bytes) - added by filosofo 18 years ago.

Download all attachments as: .zip

Change History (26)

#1 @westi
18 years ago


Should we not also look at when things are included to ensure we don't pull in a particular file until absolutely necessary to reduce the amount of code loaded.

#2 @ryan
18 years ago

The problem is we don't know what any given plugin will require to do its thing. We pretty much have to load up everything just in case a plugin needs it.

#3 @skeltoac
18 years ago

Masquerade and I developed a load-on-demand system that has been proven to work but we don't have benchmarks proving its value.

Regarding the rearranging of includes, I believe it should be done but with effort to keep the file count low. For example, bookmarks.php could be internally organized into DB, Helpers, Template Tags without splitting it into three files.

#4 @ryan
18 years ago

Either way is fine by me, although I kinda like separating the template functions out from everything else so that theme authors can go looking through the template functions without having to wade through the other stuff.

#5 @davidhouse
18 years ago

I'd say two-tier: DB and DB helper funcs (as the latter are likely to be DB-specific anyway) in object-db.php, then template and template helper in object-template.php. Also make everything in *-template.php pluggable.

#6 @ryan
18 years ago

Sounds good. A simple split between domain and presentation is sufficient.

#7 @markjaquith
18 years ago

Recommend we hold off on this until after 2.0.2, as it make it hard to put changes into 2.0.2 and 2.1 simultaneously.

#8 @ryan
18 years ago


#9 @ryan
18 years ago

[3638] moves WP_Rewrite and its wrapper functions to rewrite.php. See #2433.

#10 @ryan
18 years ago

[3639] moves WP_Query and its wrapper functions to query.php Now I can actually find them. :-)

18 years ago

Moves template, stylesheet, theme fxns to theme.php

#11 @ryan
18 years ago

Attached diff moves all of the theme related functions to theme.php.

#12 @ryan
18 years ago

[3711] moves theme functions to theme.php.

18 years ago

Move comment functions into comment.php and comment-template.php

#13 @ryan
18 years ago

Path renames comment-functions.php to comment.php, moves template functions to comment-template.php, and moves comment functions in functions.php to comment.php.

#14 @ryan
18 years ago

[3714] reorgs comment functions.

#15 @ryan
18 years ago

[3843] reorgs category functions.

#16 @filosofo
18 years ago

You deleted template-functions-category.php but wp-settings.php still includes it.

#17 @ryan
18 years ago

Oops. I checked in from wp-includes instead of trunk. Fixed.

#18 @ryan
18 years ago

[3845] reorgs bookmark functions.

#19 @ryan
18 years ago

[3851] reorgs post/page/attachment functions.

#20 @ryan
18 years ago

[3854] moves user functions to user.php.

#21 @ryan
18 years ago

[3862] finishes up the file renaming.

#22 @ryan
18 years ago

[3893] moves plugin API to plugin.php.

#23 @ryan
18 years ago

  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.