Ticket #2525 (closed defect (bug): fixed)
Restructure wp-includes
| Reported by: |
|
Owned by: |
|
|---|---|---|---|
| Priority: | normal | Milestone: | 2.1 |
| Component: | Administration | Version: | 2.0.1 |
| Severity: | normal | Keywords: | includes |
| Cc: |
Description
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
Change History
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.
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.
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.
comment:5
davidhouse — 6 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.
Sounds good. A simple split between domain and presentation is sufficient.
comment:7
markjaquith — 6 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.
comment:10
ryan — 6 years ago
[3639] moves WP_Query and its wrapper functions to query.php Now I can actually find them. :-)
-
attachment
theme-funcs.diff
added
Moves template, stylesheet, theme fxns to theme.php
comment:11
ryan — 6 years ago
Attached diff moves all of the theme related functions to theme.php.
comment:12
ryan — 6 years ago
[3711] moves theme functions to theme.php.
-
attachment
comment-funcs.diff
added
Move comment functions into comment.php and comment-template.php
comment:13
ryan — 6 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.
comment:14
ryan — 6 years ago
[3714] reorgs comment functions.
comment:15
ryan — 6 years ago
[3843] reorgs category functions.
comment:16
filosofo — 6 years ago
You deleted template-functions-category.php but wp-settings.php still includes it.
comment:17
ryan — 6 years ago
Oops. I checked in from wp-includes instead of trunk. Fixed.
comment:18
ryan — 6 years ago
[3845] reorgs bookmark functions.
comment:19
ryan — 6 years ago
[3851] reorgs post/page/attachment functions.
comment:20
ryan — 6 years ago
[3854] moves user functions to user.php.
comment:21
ryan — 6 years ago
[3862] finishes up the file renaming.
comment:22
ryan — 6 years ago
[3893] moves plugin API to plugin.php.

+1
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.