[wp-trac] [WordPress Trac] #2479: theme functions.php should override pluggable-functions.php

WordPress Trac wp-trac at lists.automattic.com
Wed Jun 20 19:18:48 UTC 2012


#2479: theme functions.php should override pluggable-functions.php
----------------------------+------------------------------
 Reporter:  technosailor    |       Owner:  anonymous
     Type:  defect (bug)    |      Status:  reopened
 Priority:  normal          |   Milestone:  Awaiting Review
Component:  Administration  |     Version:  2.0.1
 Severity:  normal          |  Resolution:
 Keywords:  2nd-opinion     |
----------------------------+------------------------------

Comment (by nacin):

 If you are building this for a single client, you should absolutely take
 advantage of mu-plugins.

 There are a lot of things in WordPress that you can't do in functions.php.
 Pluggable functions is one of them, but more obvious, a number of hooks
 (both actions and filters) fire before functions.php. In some cases, these
 hooks even fire before regular plugins, which then requires you to use mu-
 plugins or a network-activated plugin. In still other cases, even a mu-
 plugin is too late. Perhaps you need something in sunrise.php. Or even
 something (a constant or otherwise) in wp-config.php.

 I would rather add some hooks to pluggable functions, than to make it
 easier to override them. We are not likely to ever again have another
 pluggable function — they pre-date hooks and I've almost never seen a
 situation where there is advantage to them over a good old-fashioned (new-
 fashioned?) hook.

 I still agree, six years later, with andy — "There are many differences
 between a theme's functions file and a plugin. Let's keep it that way."

 That all aside, a change like this could never happen. It would break a
 lot of things. Countless themes call functions in the body of
 functions.php that would result in a fatal error if pluggable.php hadn't
 already loaded — like current_user_can(), or wp_create_nonce(). They'd all
 fail. And it'd break plugins, too, which normally could start calling
 these functions on plugins_loaded. (Just move pluggable.php lower in wp-
 settings.php and I bet half of core would break — or at the very least,
 the customizer would.)

 Finally, there's the inevitable idea that a theme could include a separate
 file like pluggable.php that we could load as early as we load plugins,
 and therefore could override pluggable functions. Aside from this being a
 bad idea (see the first four paragraphs of this comment), it would still
 not be compatible, because up until the setup_theme hook, one could
 override which theme is to be loaded by filtering stylesheet and template
 values.

 Unfortunately, this just isn't tenable given how WordPress is architected.
 The good thing is, there are countless (better) ways to do it.

-- 
Ticket URL: <http://core.trac.wordpress.org/ticket/2479#comment:5>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list