Adds extra code to a registered script.
Description
Code will only be added if the script is already in the queue.
Accepts a string $data
containing the code. If two or more code blocks are added to the same script $handle
, they will be printed in the order they were added, i.e. the latter added code can redeclare the previous.
See also
Parameters
$handle
stringrequired- Name of the script to add the inline script to.
$data
stringrequired- String containing the JavaScript to be added.
$position
stringoptional- Whether to add the inline script before the handle or after. Default
'after'
.Default:
'after'
Source
function wp_add_inline_script( $handle, $data, $position = 'after' ) {
_wp_scripts_maybe_doing_it_wrong( __FUNCTION__, $handle );
if ( false !== stripos( $data, '</script>' ) ) {
_doing_it_wrong(
__FUNCTION__,
sprintf(
/* translators: 1: <script>, 2: wp_add_inline_script() */
__( 'Do not pass %1$s tags to %2$s.' ),
'<code><script></code>',
'<code>wp_add_inline_script()</code>'
),
'4.5.0'
);
$data = trim( preg_replace( '#<script[^>]*>(.*)</script>#is', '$1', $data ) );
}
return wp_scripts()->add_inline_script( $handle, $data, $position );
}
Changelog
Version | Description |
---|---|
4.5.0 | Introduced. |
Apparently we should now use
wp_add_inline_script
instead ofwp_localize_script
to expose a global object that needs to be used by your script.So, while previously you could (and still can) do this:
It seems that it’s now recommended to do it like this (which I personally believe is a lot uglier):
Note that you need to add
'before'
as the third parameter to thewp_add_inline_script
function.Now, in your JS script you can access these PHP parameters like this:
The following code can be used to easily add Typekit’s JavaScript to your theme:
Which results in:
From https://make.wordpress.org/core/2016/03/08/enhanced-script-loader-in-wordpress-4-5/
Add CSS Style without dependency
Add JavaScript Code without dependency
Add JavaScript Code with jQuery dependency
NOTE: with new block themes such as Twenty Twenty Two,
wp_localize_script
/wp_add_inline_script
will no longer work if called too late such as in a shortcode rendering callback function. To achieve this you will need to make use of an anonymous function call hooked on wp_footer action,this is handy function when you want to make sure your anonymous function uses an object that is instantiated using a javascript library that can potentially clash with other versions loaded by other plugins or by WordPress core itself. For example, if you need to use a different version of jQuery, you can do the following,
this will instantiate a new jQuery object `jquery3_2_1` right after the jquery library v3.2.1 is loaded by the browser, ensuring it has the right version references, which you can then pass as an attribute the `js.js` script,
For adding inline script
For jQuery-dependent scripts use this: