author | ymh <ymh.work@gmail.com> |
Fri, 05 Sep 2025 18:40:08 +0200 | |
changeset 21 | 48c4eec2b7e6 |
parent 19 | 3d72ae0968f4 |
permissions | -rw-r--r-- |
0 | 1 |
<?php |
2 |
/** |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
3 |
* Dependencies API: Scripts functions |
0 | 4 |
* |
5 |
* @since 2.6.0 |
|
6 |
* |
|
7 |
* @package WordPress |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
8 |
* @subpackage Dependencies |
0 | 9 |
*/ |
10 |
||
11 |
/** |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
12 |
* Initializes $wp_scripts if it has not been set. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
13 |
* |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
14 |
* @since 4.2.0 |
5 | 15 |
* |
16 |
* @global WP_Scripts $wp_scripts |
|
17 |
* |
|
18 |
* @return WP_Scripts WP_Scripts instance. |
|
19 |
*/ |
|
20 |
function wp_scripts() { |
|
21 |
global $wp_scripts; |
|
16 | 22 |
|
5 | 23 |
if ( ! ( $wp_scripts instanceof WP_Scripts ) ) { |
24 |
$wp_scripts = new WP_Scripts(); |
|
25 |
} |
|
16 | 26 |
|
5 | 27 |
return $wp_scripts; |
28 |
} |
|
29 |
||
30 |
/** |
|
31 |
* Helper function to output a _doing_it_wrong message when applicable. |
|
32 |
* |
|
33 |
* @ignore |
|
34 |
* @since 4.2.0 |
|
16 | 35 |
* @since 5.5.0 Added the `$handle` parameter. |
5 | 36 |
* |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
37 |
* @param string $function_name Function name. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
38 |
* @param string $handle Optional. Name of the script or stylesheet that was |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
39 |
* registered or enqueued too early. Default empty. |
5 | 40 |
*/ |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
41 |
function _wp_scripts_maybe_doing_it_wrong( $function_name, $handle = '' ) { |
16 | 42 |
if ( did_action( 'init' ) || did_action( 'wp_enqueue_scripts' ) |
43 |
|| did_action( 'admin_enqueue_scripts' ) || did_action( 'login_enqueue_scripts' ) |
|
44 |
) { |
|
5 | 45 |
return; |
46 |
} |
|
47 |
||
16 | 48 |
$message = sprintf( |
49 |
/* translators: 1: wp_enqueue_scripts, 2: admin_enqueue_scripts, 3: login_enqueue_scripts */ |
|
50 |
__( 'Scripts and styles should not be registered or enqueued until the %1$s, %2$s, or %3$s hooks.' ), |
|
51 |
'<code>wp_enqueue_scripts</code>', |
|
52 |
'<code>admin_enqueue_scripts</code>', |
|
53 |
'<code>login_enqueue_scripts</code>' |
|
54 |
); |
|
55 |
||
56 |
if ( $handle ) { |
|
57 |
$message .= ' ' . sprintf( |
|
58 |
/* translators: %s: Name of the script or stylesheet. */ |
|
59 |
__( 'This notice was triggered by the %s handle.' ), |
|
60 |
'<code>' . $handle . '</code>' |
|
61 |
); |
|
62 |
} |
|
63 |
||
9 | 64 |
_doing_it_wrong( |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
65 |
$function_name, |
16 | 66 |
$message, |
9 | 67 |
'3.3.0' |
68 |
); |
|
5 | 69 |
} |
70 |
||
71 |
/** |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
72 |
* Prints scripts in document head that are in the $handles queue. |
0 | 73 |
* |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
74 |
* Called by admin-header.php and {@see 'wp_head'} hook. Since it is called by wp_head on every page load, |
0 | 75 |
* the function does not instantiate the WP_Scripts object unless script names are explicitly passed. |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
76 |
* Makes use of already-instantiated `$wp_scripts` global if present. Use provided {@see 'wp_print_scripts'} |
0 | 77 |
* hook to register/enqueue new scripts. |
78 |
* |
|
16 | 79 |
* @see WP_Scripts::do_item() |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
80 |
* @since 2.1.0 |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
81 |
* |
0 | 82 |
* @global WP_Scripts $wp_scripts The WP_Scripts object for printing scripts. |
83 |
* |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
84 |
* @param string|string[]|false $handles Optional. Scripts to be printed. Default 'false'. |
16 | 85 |
* @return string[] On success, an array of handles of processed WP_Dependencies items; otherwise, an empty array. |
0 | 86 |
*/ |
87 |
function wp_print_scripts( $handles = false ) { |
|
16 | 88 |
global $wp_scripts; |
89 |
||
5 | 90 |
/** |
91 |
* Fires before scripts in the $handles queue are printed. |
|
92 |
* |
|
93 |
* @since 2.1.0 |
|
94 |
*/ |
|
0 | 95 |
do_action( 'wp_print_scripts' ); |
16 | 96 |
|
97 |
if ( '' === $handles ) { // For 'wp_head'. |
|
0 | 98 |
$handles = false; |
5 | 99 |
} |
100 |
||
101 |
_wp_scripts_maybe_doing_it_wrong( __FUNCTION__ ); |
|
0 | 102 |
|
5 | 103 |
if ( ! ( $wp_scripts instanceof WP_Scripts ) ) { |
104 |
if ( ! $handles ) { |
|
0 | 105 |
return array(); // No need to instantiate if nothing is there. |
5 | 106 |
} |
0 | 107 |
} |
108 |
||
5 | 109 |
return wp_scripts()->do_items( $handles ); |
0 | 110 |
} |
111 |
||
112 |
/** |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
113 |
* Adds extra code to a registered script. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
114 |
* |
9 | 115 |
* Code will only be added if the script is already in the queue. |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
116 |
* Accepts a string `$data` containing the code. If two or more code blocks |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
117 |
* are added to the same script `$handle`, they will be printed in the order |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
118 |
* they were added, i.e. the latter added code can redeclare the previous. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
119 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
120 |
* @since 4.5.0 |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
121 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
122 |
* @see WP_Scripts::add_inline_script() |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
123 |
* |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
124 |
* @param string $handle Name of the script to add the inline script to. |
18 | 125 |
* @param string $data String containing the JavaScript to be added. |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
126 |
* @param string $position Optional. Whether to add the inline script before the handle |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
127 |
* or after. Default 'after'. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
128 |
* @return bool True on success, false on failure. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
129 |
*/ |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
130 |
function wp_add_inline_script( $handle, $data, $position = 'after' ) { |
16 | 131 |
_wp_scripts_maybe_doing_it_wrong( __FUNCTION__, $handle ); |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
132 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
133 |
if ( false !== stripos( $data, '</script>' ) ) { |
9 | 134 |
_doing_it_wrong( |
135 |
__FUNCTION__, |
|
136 |
sprintf( |
|
137 |
/* translators: 1: <script>, 2: wp_add_inline_script() */ |
|
138 |
__( 'Do not pass %1$s tags to %2$s.' ), |
|
139 |
'<code><script></code>', |
|
140 |
'<code>wp_add_inline_script()</code>' |
|
141 |
), |
|
142 |
'4.5.0' |
|
143 |
); |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
144 |
$data = trim( preg_replace( '#<script[^>]*>(.*)</script>#is', '$1', $data ) ); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
145 |
} |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
146 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
147 |
return wp_scripts()->add_inline_script( $handle, $data, $position ); |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
148 |
} |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
149 |
|
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
150 |
/** |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
151 |
* Registers a new script. |
0 | 152 |
* |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
153 |
* Registers a script to be enqueued later using the wp_enqueue_script() function. |
0 | 154 |
* |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
155 |
* @see WP_Dependencies::add() |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
156 |
* @see WP_Dependencies::add_data() |
0 | 157 |
* |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
158 |
* @since 2.1.0 |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
159 |
* @since 4.3.0 A return value was added. |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
160 |
* @since 6.3.0 The $in_footer parameter of type boolean was overloaded to be an $args parameter of type array. |
0 | 161 |
* |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
162 |
* @param string $handle Name of the script. Should be unique. |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
163 |
* @param string|false $src Full URL of the script, or path of the script relative to the WordPress root directory. |
9 | 164 |
* If source is set to false, script is an alias of other scripts it depends on. |
16 | 165 |
* @param string[] $deps Optional. An array of registered script handles this script depends on. Default empty array. |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
166 |
* @param string|bool|null $ver Optional. String specifying script version number, if it has one, which is added to the URL |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
167 |
* as a query string for cache busting purposes. If version is set to false, a version |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
168 |
* number is automatically added equal to current installed WordPress version. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
169 |
* If set to null, no version is added. |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
170 |
* @param array|bool $args { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
171 |
* Optional. An array of additional script loading strategies. Default empty array. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
172 |
* Otherwise, it may be a boolean in which case it determines whether the script is printed in the footer. Default false. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
173 |
* |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
174 |
* @type string $strategy Optional. If provided, may be either 'defer' or 'async'. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
175 |
* @type bool $in_footer Optional. Whether to print the script in the footer. Default 'false'. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
176 |
* } |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
177 |
* @return bool Whether the script has been registered. True on success, false on failure. |
0 | 178 |
*/ |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
179 |
function wp_register_script( $handle, $src, $deps = array(), $ver = false, $args = array() ) { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
180 |
if ( ! is_array( $args ) ) { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
181 |
$args = array( |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
182 |
'in_footer' => (bool) $args, |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
183 |
); |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
184 |
} |
16 | 185 |
_wp_scripts_maybe_doing_it_wrong( __FUNCTION__, $handle ); |
186 |
||
5 | 187 |
$wp_scripts = wp_scripts(); |
0 | 188 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
189 |
$registered = $wp_scripts->add( $handle, $src, $deps, $ver ); |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
190 |
if ( ! empty( $args['in_footer'] ) ) { |
0 | 191 |
$wp_scripts->add_data( $handle, 'group', 1 ); |
5 | 192 |
} |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
193 |
if ( ! empty( $args['strategy'] ) ) { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
194 |
$wp_scripts->add_data( $handle, 'strategy', $args['strategy'] ); |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
195 |
} |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
196 |
return $registered; |
0 | 197 |
} |
198 |
||
199 |
/** |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
200 |
* Localizes a script. |
0 | 201 |
* |
19 | 202 |
* Works only if the script has already been registered. |
0 | 203 |
* |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
204 |
* Accepts an associative array `$l10n` and creates a JavaScript object: |
5 | 205 |
* |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
206 |
* "$object_name": { |
5 | 207 |
* key: value, |
208 |
* key: value, |
|
209 |
* ... |
|
210 |
* } |
|
211 |
* |
|
16 | 212 |
* @see WP_Scripts::localize() |
5 | 213 |
* @link https://core.trac.wordpress.org/ticket/11520 |
0 | 214 |
* |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
215 |
* @since 2.2.0 |
0 | 216 |
* |
5 | 217 |
* @todo Documentation cleanup |
218 |
* |
|
0 | 219 |
* @param string $handle Script handle the data will be attached to. |
220 |
* @param string $object_name Name for the JavaScript object. Passed directly, so it should be qualified JS variable. |
|
221 |
* Example: '/[a-zA-Z0-9_]+/'. |
|
16 | 222 |
* @param array $l10n The data itself. The data can be either a single or multi-dimensional array. |
0 | 223 |
* @return bool True if the script was successfully localized, false otherwise. |
224 |
*/ |
|
225 |
function wp_localize_script( $handle, $object_name, $l10n ) { |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
226 |
$wp_scripts = wp_scripts(); |
0 | 227 |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
228 |
return $wp_scripts->localize( $handle, $object_name, $l10n ); |
0 | 229 |
} |
230 |
||
231 |
/** |
|
9 | 232 |
* Sets translated strings for a script. |
233 |
* |
|
19 | 234 |
* Works only if the script has already been registered. |
9 | 235 |
* |
236 |
* @see WP_Scripts::set_translations() |
|
237 |
* @since 5.0.0 |
|
238 |
* @since 5.1.0 The `$domain` parameter was made optional. |
|
239 |
* |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
240 |
* @global WP_Scripts $wp_scripts The WP_Scripts object for printing scripts. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
241 |
* |
9 | 242 |
* @param string $handle Script handle the textdomain will be attached to. |
243 |
* @param string $domain Optional. Text domain. Default 'default'. |
|
244 |
* @param string $path Optional. The full file path to the directory containing translation files. |
|
245 |
* @return bool True if the text domain was successfully localized, false otherwise. |
|
246 |
*/ |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
247 |
function wp_set_script_translations( $handle, $domain = 'default', $path = '' ) { |
9 | 248 |
global $wp_scripts; |
16 | 249 |
|
9 | 250 |
if ( ! ( $wp_scripts instanceof WP_Scripts ) ) { |
16 | 251 |
_wp_scripts_maybe_doing_it_wrong( __FUNCTION__, $handle ); |
9 | 252 |
return false; |
253 |
} |
|
254 |
||
255 |
return $wp_scripts->set_translations( $handle, $domain, $path ); |
|
256 |
} |
|
257 |
||
258 |
/** |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
259 |
* Removes a registered script. |
0 | 260 |
* |
261 |
* Note: there are intentional safeguards in place to prevent critical admin scripts, |
|
262 |
* such as jQuery core, from being unregistered. |
|
263 |
* |
|
264 |
* @see WP_Dependencies::remove() |
|
265 |
* |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
266 |
* @since 2.1.0 |
0 | 267 |
* |
19 | 268 |
* @global string $pagenow The filename of the current screen. |
18 | 269 |
* |
0 | 270 |
* @param string $handle Name of the script to be removed. |
271 |
*/ |
|
272 |
function wp_deregister_script( $handle ) { |
|
18 | 273 |
global $pagenow; |
274 |
||
16 | 275 |
_wp_scripts_maybe_doing_it_wrong( __FUNCTION__, $handle ); |
0 | 276 |
|
277 |
/** |
|
278 |
* Do not allow accidental or negligent de-registering of critical scripts in the admin. |
|
279 |
* Show minimal remorse if the correct hook is used. |
|
280 |
*/ |
|
281 |
$current_filter = current_filter(); |
|
282 |
if ( ( is_admin() && 'admin_enqueue_scripts' !== $current_filter ) || |
|
18 | 283 |
( 'wp-login.php' === $pagenow && 'login_enqueue_scripts' !== $current_filter ) |
0 | 284 |
) { |
16 | 285 |
$not_allowed = array( |
9 | 286 |
'jquery', |
287 |
'jquery-core', |
|
288 |
'jquery-migrate', |
|
289 |
'jquery-ui-core', |
|
290 |
'jquery-ui-accordion', |
|
291 |
'jquery-ui-autocomplete', |
|
292 |
'jquery-ui-button', |
|
293 |
'jquery-ui-datepicker', |
|
294 |
'jquery-ui-dialog', |
|
295 |
'jquery-ui-draggable', |
|
296 |
'jquery-ui-droppable', |
|
297 |
'jquery-ui-menu', |
|
298 |
'jquery-ui-mouse', |
|
299 |
'jquery-ui-position', |
|
300 |
'jquery-ui-progressbar', |
|
301 |
'jquery-ui-resizable', |
|
302 |
'jquery-ui-selectable', |
|
303 |
'jquery-ui-slider', |
|
304 |
'jquery-ui-sortable', |
|
305 |
'jquery-ui-spinner', |
|
306 |
'jquery-ui-tabs', |
|
307 |
'jquery-ui-tooltip', |
|
308 |
'jquery-ui-widget', |
|
309 |
'underscore', |
|
310 |
'backbone', |
|
0 | 311 |
); |
312 |
||
16 | 313 |
if ( in_array( $handle, $not_allowed, true ) ) { |
18 | 314 |
_doing_it_wrong( |
315 |
__FUNCTION__, |
|
316 |
sprintf( |
|
317 |
/* translators: 1: Script name, 2: wp_enqueue_scripts */ |
|
318 |
__( 'Do not deregister the %1$s script in the administration area. To target the front-end theme, use the %2$s hook.' ), |
|
319 |
"<code>$handle</code>", |
|
320 |
'<code>wp_enqueue_scripts</code>' |
|
321 |
), |
|
322 |
'3.6.0' |
|
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
323 |
); |
0 | 324 |
return; |
325 |
} |
|
326 |
} |
|
327 |
||
5 | 328 |
wp_scripts()->remove( $handle ); |
0 | 329 |
} |
330 |
||
331 |
/** |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
332 |
* Enqueues a script. |
0 | 333 |
* |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
334 |
* Registers the script if `$src` provided (does NOT overwrite), and enqueues it. |
0 | 335 |
* |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
336 |
* @see WP_Dependencies::add() |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
337 |
* @see WP_Dependencies::add_data() |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
338 |
* @see WP_Dependencies::enqueue() |
0 | 339 |
* |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
340 |
* @since 2.1.0 |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
341 |
* @since 6.3.0 The $in_footer parameter of type boolean was overloaded to be an $args parameter of type array. |
5 | 342 |
* |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
343 |
* @param string $handle Name of the script. Should be unique. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
344 |
* @param string $src Full URL of the script, or path of the script relative to the WordPress root directory. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
345 |
* Default empty. |
16 | 346 |
* @param string[] $deps Optional. An array of registered script handles this script depends on. Default empty array. |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
347 |
* @param string|bool|null $ver Optional. String specifying script version number, if it has one, which is added to the URL |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
348 |
* as a query string for cache busting purposes. If version is set to false, a version |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
349 |
* number is automatically added equal to current installed WordPress version. |
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
350 |
* If set to null, no version is added. |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
351 |
* @param array|bool $args { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
352 |
* Optional. An array of additional script loading strategies. Default empty array. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
353 |
* Otherwise, it may be a boolean in which case it determines whether the script is printed in the footer. Default false. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
354 |
* |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
355 |
* @type string $strategy Optional. If provided, may be either 'defer' or 'async'. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
356 |
* @type bool $in_footer Optional. Whether to print the script in the footer. Default 'false'. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
357 |
* } |
0 | 358 |
*/ |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
359 |
function wp_enqueue_script( $handle, $src = '', $deps = array(), $ver = false, $args = array() ) { |
16 | 360 |
_wp_scripts_maybe_doing_it_wrong( __FUNCTION__, $handle ); |
5 | 361 |
|
16 | 362 |
$wp_scripts = wp_scripts(); |
5 | 363 |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
364 |
if ( $src || ! empty( $args ) ) { |
5 | 365 |
$_handle = explode( '?', $handle ); |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
366 |
if ( ! is_array( $args ) ) { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
367 |
$args = array( |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
368 |
'in_footer' => (bool) $args, |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
369 |
); |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
370 |
} |
5 | 371 |
|
372 |
if ( $src ) { |
|
373 |
$wp_scripts->add( $_handle[0], $src, $deps, $ver ); |
|
374 |
} |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
375 |
if ( ! empty( $args['in_footer'] ) ) { |
5 | 376 |
$wp_scripts->add_data( $_handle[0], 'group', 1 ); |
377 |
} |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
378 |
if ( ! empty( $args['strategy'] ) ) { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
379 |
$wp_scripts->add_data( $_handle[0], 'strategy', $args['strategy'] ); |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
380 |
} |
0 | 381 |
} |
382 |
||
383 |
$wp_scripts->enqueue( $handle ); |
|
384 |
} |
|
385 |
||
386 |
/** |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
387 |
* Removes a previously enqueued script. |
0 | 388 |
* |
389 |
* @see WP_Dependencies::dequeue() |
|
390 |
* |
|
391 |
* @since 3.1.0 |
|
392 |
* |
|
393 |
* @param string $handle Name of the script to be removed. |
|
394 |
*/ |
|
395 |
function wp_dequeue_script( $handle ) { |
|
16 | 396 |
_wp_scripts_maybe_doing_it_wrong( __FUNCTION__, $handle ); |
0 | 397 |
|
5 | 398 |
wp_scripts()->dequeue( $handle ); |
0 | 399 |
} |
400 |
||
401 |
/** |
|
9 | 402 |
* Determines whether a script has been added to the queue. |
403 |
* |
|
404 |
* For more information on this and similar theme functions, check out |
|
405 |
* the {@link https://developer.wordpress.org/themes/basics/conditional-tags/ |
|
406 |
* Conditional Tags} article in the Theme Developer Handbook. |
|
0 | 407 |
* |
408 |
* @since 2.8.0 |
|
409 |
* @since 3.5.0 'enqueued' added as an alias of the 'queue' list. |
|
410 |
* |
|
411 |
* @param string $handle Name of the script. |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
412 |
* @param string $status Optional. Status of the script to check. Default 'enqueued'. |
0 | 413 |
* Accepts 'enqueued', 'registered', 'queue', 'to_do', and 'done'. |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
414 |
* @return bool Whether the script is queued. |
0 | 415 |
*/ |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
416 |
function wp_script_is( $handle, $status = 'enqueued' ) { |
16 | 417 |
_wp_scripts_maybe_doing_it_wrong( __FUNCTION__, $handle ); |
5 | 418 |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
419 |
return (bool) wp_scripts()->query( $handle, $status ); |
5 | 420 |
} |
421 |
||
422 |
/** |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
423 |
* Adds metadata to a script. |
5 | 424 |
* |
19 | 425 |
* Works only if the script has already been registered. |
5 | 426 |
* |
427 |
* Possible values for $key and $value: |
|
428 |
* 'conditional' string Comments for IE 6, lte IE 7, etc. |
|
429 |
* |
|
430 |
* @since 4.2.0 |
|
431 |
* |
|
9 | 432 |
* @see WP_Dependencies::add_data() |
5 | 433 |
* |
434 |
* @param string $handle Name of the script. |
|
435 |
* @param string $key Name of data point for which we're storing a value. |
|
436 |
* @param mixed $value String containing the data to be added. |
|
437 |
* @return bool True on success, false on failure. |
|
438 |
*/ |
|
9 | 439 |
function wp_script_add_data( $handle, $key, $value ) { |
7
cf61fcea0001
resynchronize code repo with production
ymh <ymh.work@gmail.com>
parents:
5
diff
changeset
|
440 |
return wp_scripts()->add_data( $handle, $key, $value ); |
0 | 441 |
} |