[wp-hackers] wp_register_script() vs. wp_enqueue_script()?
Mike Schinkel
mikeschinkel at newclarity.net
Thu Jan 22 02:10:33 GMT 2009
Chris Jean <gaarai at gaarai.com> wrote:
> Technically, you never have to register anything if you don't
> want to. The register functions are there and can be valuable
> if you want a central location that defines scripts and styles
> that will be used in your plugin/theme. You can then simply use
> the enqueue functions while referring to just the handle in
> order to enqueue the script or style for inclusion in the head.
>
> So, the main purpose of the register functions is to allow you
> to simplify your code by removing the need to duplicate code
> if you enqueue the same script or style in more than one
> section of code. The benefits of this are many and probably
> don't need to be listed here.
That's very clear. Thanks!
"Austin Matzko" <if.website at gmail.com> wrote:
> wp_register_script is particularly useful when you have
> several scripts dependent on each other. So when you
> initialize your plugin,you register each of the scripts
> with their dependencies using wp_register_script. Then
> later at the point you actually need one of the scripts
> to be printed, you call wp_enqueue_script using the
> handle of that particular script, and WordPress handles
> the dependencies for you.
So does wp_enqueue_script() explicitly NOT establish a name for managing dependencies in the same way that wp_register_script() does? If yes, why do you have to give the script a name in wp_enqueue_script()?
But anyway, it brings up another question I know from the wp_enqueue_script() docs that WP core registers several standard scripts like "jquery" and "scriptaculous." However, it doesn't (and couldn't) register many other well-known scripts people might need and that might results in them being duplicated by different plugins. One very common one I need that is not in core is "swfobject" and I know other plugins include it. For example, we might end up with the following because of two different plugins using their own local copy of the same script:
// In HTML generated by WordPress install with both FOO and BAR plugins
<script type="text/javascript" src="http://example.com/wp-content/plugins/FOO/js/swfobject.js"></script>
<script type="text/javascript" src="http://example.com/wp-content/plugins/BAR/js/swfobject.js"></script>
Has there been any thought to creating a set of "standards" for well-known scripts such that, if used by more than one plugin would only use one of them? Maybe something like this?
// In FOO plugin
wp_enqueue_script("wp-std/swfobject","http://example.com/wp-content/plugins/FOO/js/swfobject.js",array(),'2.1');
// In BAR plugin
wp_enqueue_script("wp-std/swfobject","http://example.com/wp-content/plugins/BAR/js/swfobject.js",array(),'2.1');
This could then be documented on a wiki page at WordPress.org and become a best practice for plugin development maybe?
-Mike Schinkel
http://mikeschinkel.com/
More information about the wp-hackers
mailing list