Code Versus Data in Customized WordPress Models
Surprised, at first, that Codex says to (re)register custom post types (CPT) at "init" — an event (WP calls them "hooks") triggered early in the processing of every request. Custom taxonomies, too.
Why repeat this messy setup (WP even registers its own built-ins that way) — it's just configuration data, no logic — regardless of whether it's at all needed in that request? Isn't this configuration persisted to the DB? No.
Curious tradeoff between code and data?
- A lot of this configuration is labels for menus in the admin screens, which need to be translated, thus all the gettext tagging.
$labels = array( 'name' => _x('Books', 'post type general name', 'your_text_domain'), 'singular_name' => _x('Book', 'post type singular name', 'your_text_domain'), 'add_new' => _x('Add New', 'book', 'your_text_domain'), 'add_new_item' => __('Add New Book', 'your_text_domain'), 'edit_item' => __('Edit Book', 'your_text_domain'), 'new_item' => __('New Book', 'your_text_domain'), 'all_items' => __('All Books', 'your_text_domain'), 'view_item' => __('View Book', 'your_text_domain'), 'search_items' => __('Search Books', 'your_text_domain'), 'not_found' => __('No books found', 'your_text_domain'), 'not_found_in_trash' => __('No books found in Trash', 'your_text_domain'), 'parent_item_colon' => '', 'menu_name' => __('Books', 'your_text_domain') );
- But, gettext uses the "source" to prepare translations — the code doesn't need to be executed when it's not being rendered. Why not use a callback?
- WP does such "registrations" a lot, instantiating crufty data structures, storing them in globals (nu, PHP). I wonder…
…
--
The real world is a special case