Opened 13 years ago
Closed 10 years ago
#20513 closed enhancement (fixed)
Refactor $wp_scripts init checking code
Reported by: | GaryJ | Owned by: | wonderboymusic |
---|---|---|---|
Milestone: | 4.2 | Priority: | normal |
Severity: | normal | Version: | 3.4 |
Component: | Script Loader | Keywords: | has-patch needs-testing |
Focuses: | Cc: |
Description
The functions in functions.wp-scripts.php seem to contain a lot of duplicate code in terms of checking and initializing the global $wp_scripts
in each function.
Attached is rough first pass at creating a function to do this. I expect aspects of it could be done better.
I've included the first argument, to avoid relying on a global so that the function might be unit tested (pass something in, see what gets returned).
Attachments (4)
Change History (28)
#2
@
13 years ago
- accept first parameter by reference, instead of returning
- replaced $fallback parameter with $function
Not really sure if the extra check in wp_localize_script() is worth it. Could just instantiate anyway.
#3
@
13 years ago
20513.3.diff replaces wp_scripts_maybe_initialize() with wp_scripts(), so you can do:
wp_scripts()->do_items( $handle );
etc.
#4
@
13 years ago
I don't think this init code is relevant for unit testing. If you want to unit test WP_Scripts, just create an instance manually.
#5
@
13 years ago
That looks good to me.
Might be another ticket, but I suspect something similar can be done with $wp_styles
too.
#7
@
13 years ago
Think I attempted to do something similar for 3.2 (or was it 3.3). The argument against it is that this breaks the backtrace so if a plugin author calls any of these functions too early _doing_it_wrong() would show the wrong reference.
#8
@
13 years ago
If the function reference is so important, we could pass it along:
wp_scripts( __FUNCTION__ )->do_items( $handle );
#10
follow-up:
↓ 11
@
13 years ago
Related discussion: #11526.
How expensive is debug_backtrace( false )
?
How many themes and plugins are still firing these functions before init
action has occurred? (Nacin's relatively recent post might have reminded some of the authors to be using the wp_enqueue_scripts
hook.)
Could wp_debug_backtrace_summary()
be used to pinpoint the original function called?
While scribu's suggestion may well work, it seems dirty to be including an argument purely for debugging purposes.
#11
in reply to:
↑ 10
@
13 years ago
Replying to GaryJ:
How many themes and plugins are still firing these functions before
init
action has occurred?
Plugins: http://pastebin.com/szGUhsp0 (may have some false positives due to a lack of whitespace).
Themes: http://pastebin.com/bbM47tG8 (tried to filter out false positives).
#13
@
10 years ago
- Milestone changed from Awaiting Review to Future Release
[20513.4.diff] makes 2 funcs, could work
#16
@
10 years ago
- Owner set to wonderboymusic
- Resolution set to fixed
- Status changed from new to closed
In 31192:
First pass