[wp-hackers] Overriding Cor Functions (Was: IIS Problem)
Ryan Boren
ryan at boren.nu
Sun Apr 3 18:40:01 GMT 2005
On Sun, 2005-04-03 at 03:32 -0500, Scott Reilly wrote:
> Since you mentioned it, WP doesn't currently support plugins
> overriding core functions even if those core functions are wrapped in
> function_exists(), correct? I know the intent is for plugins to be
> able to do that, but how? Plugins aren't sourced until after all core
> files have been sourced, which is too late. Or am I missing
> something?
Here's an approach I've been mulling over.
Add a preload_file action to be called from plugin files. This allows
plugin files to specify a file to be loaded before the core WP
includes. In the plugin:
function test_plugin_preload_file() {
preload_file(dirname(__FILE__). '/test_preload.php');
}
add_action('preload_file', 'test_plugin_preload_file');
preload_file() runs plugin_basename() on the supplied file and adds it
to a 'preload' array in the options DB.
In plugins.php, we call the preload_file action whenever a plugin is
activated. This is a bit tricky. First we'll have to unset all
existing preload actions and then include the just activated plugin.
Then we call the preload_file action. This is the only situation where
the preload_file action is called.
In wp-settings.php, we loop through the list of preloaded files after
wp-db.php is included but before functions.php is included. Since
functions.php is not yet included, we have to be careful not to call
get_option() to retrieve the preload array etc. Only wpdb may be used.
Thoughts?
Ryan
More information about the wp-hackers
mailing list