wp_add_inline_script( string $handle, string $data, string $position = 'after' ): bool
- Since
- 4.5.0
- Source
wp-includes/functions.wp-scripts.php:210
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.
Compatibility
- WordPress
- since 4.5.0
- PHP
- 7.4–8.6-dev
- 6.7.7
- 6.8.8
- 6.9.7
- 7.0.4
- 7.1.0
Present in every tracked release (6.7.7 to 7.1.0), and compiles on PHP 7.4 through 8.6-dev.
Parameters
$handlestring- Name of the script to add the inline script to.
$datastring- String containing the JavaScript to be added.
$positionstringoptional- Whether to add the inline script before the handle or after. Default 'after'.Default:
'after'
Return value
bool- True on success, false on failure.
Performance profile
How much work a call to wp_add_inline_script() does, and what it touches: the algorithmic scaling, the Zend instruction count per call across PHP versions, the hooks it hands control to, and the core code that calls it. Measured from the compiled opcodes, not a stopwatch, so every number is identical on any machine running the same PHP version, and every function in core is ranked by cost.
- Cost class
- Trivial
- Scaling
- Constant
- Instructions
- 21–39
- Plugin surface
- None
- Called by
- 27
Touches nothing outside its own arguments.
No loop in the body: the same number of instructions runs whatever you pass in.
Executed per call on PHP 8.5, depending on the branch taken. The body compiles to 39.
Nothing here hands control to plugin code.
27 places in core call this, so the cost is paid more often than your own code shows.
What it touches
- hookthird-party callbacks
do_action()one call below wp_add_inline_script()
Further down the call graph this can also reach query, option, cache, serialize and transient. Those are the worst case, several calls deep and usually down an error path, not what a normal call pays.
What one call costs · 2 distinct outcomes
One number would be a lie: the work depends on which branch runs. These are every distinct cost wp_add_inline_script() can have, taken from its control-flow graph on PHP 8.5.
| When | Instructions | Calls it makes |
|---|---|---|
| always | 21 | _wp_scripts_maybe_doing_it_wrong(), stripos(), wp_scripts(), ->add_inline_script() |
| always | 39 | _wp_scripts_maybe_doing_it_wrong(), stripos(), __(), sprintf(), _doing_it_wrong(), wp_scripts(), ->add_inline_script() |
Across PHP versions
| PHP | Compiled | Executed | Branches | Notes |
|---|---|---|---|---|
| 8.6-dev | 39 | 21–39 | 1 | |
| 8.5 | 39 | 21–39 | 1 | |
| 8.4 | 39 | 21–39 | 1 | 5 fewer instructions than PHP 8.3 |
| 8.3 | 44 | 21–44 | 1 | |
| 8.2 | 44 | 21–44 | 1 | |
| 8.1 | 44 | 21–44 | 1 | |
| 7.4 | 44 | 21–44 | 1 |
An instruction is not a fixed amount of time, so a matching count is not necessarily the same speed; what it rules out is a difference in the work itself.
Uses · 6
- _wp_scripts_maybe_doing_it_wrong()Helper function to output a _doing_it_wrong message when applicable.
- stripos()
- _doing_it_wrong()Marks something as being incorrectly called.
- __()Retrieves the translation of $text.
- wp_scripts()Initializes $wp_scripts if it has not been set.
- wp_scripts()::add_inline_script()
Used by · 27
- WP_Customize_Widgets::enqueue_scripts()Enqueues scripts and styles for Customizer panel and export data to JavaScript.
- WP_Privacy_Policy_Content::notice()Adds a notice with a link to the guide when editing the privacy policy page.
- WP_Widget_Custom_HTML::enqueue_admin_scripts()Loads the required scripts and styles for the widget control.
- WP_Widget_Media_Audio::enqueue_admin_scripts()Loads the required media files for the media manager and scripts for media widgets.
- WP_Widget_Media_Gallery::enqueue_admin_scripts()Loads the required media files for the media manager and scripts for media widgets.
- WP_Widget_Media_Image::enqueue_admin_scripts()Loads the required media files for the media manager and scripts for media widgets.
- WP_Widget_Media_Video::enqueue_admin_scripts()Loads the required scripts and styles for the widget control.
- WP_Widget_Text::enqueue_admin_scripts()Loads the required scripts and styles for the widget control.
- _wp_block_editor_posts_page_notice()Outputs a notice when editing the page for posts in the block editor (internal use only).
- _wp_enqueue_auto_register_blocks()Exposes blocks with autoRegister flag for ServerSideRender in the editor.
- block_editor_rest_api_preload()Preloads common data used with the block editor by specifying an array of REST API paths that will be preloaded for a given block editor context.
- enqueue_editor_block_styles_assets()Function responsible for enqueuing the assets required for block styles functionality on the editor.
Show all 27
- the_block_editor_meta_boxes()Renders the meta boxes forms.
- twentytwenty_customize_preview_init()Enqueues scripts for the customizer preview.
- wp_attach_theme_preview_middleware()Adds a middleware to `apiFetch` to set the theme for the preview.
- wp_enqueue_code_editor()Enqueues assets needed by the code editor for the given settings.
- wp_enqueue_command_palette_assets()Enqueues the assets required for the Command Palette.
- wp_font_library_preload_data()Preload REST API data for the font-library page.
- wp_font_library_render_page()Render the font-library page.
- wp_font_library_wp_admin_enqueue_scripts()Enqueue scripts and styles for the font-library-wp-admin page.
- wp_font_library_wp_admin_preload_data()Preload REST API data for the font-library-wp-admin page.
- wp_localize_jquery_ui_datepicker()Localizes the jQuery UI datepicker.
- wp_options_connectors_preload_data()Preload REST API data for the options-connectors page.
- wp_options_connectors_render_page()Render the options-connectors page.
- wp_options_connectors_wp_admin_enqueue_scripts()Enqueue scripts and styles for the options-connectors-wp-admin page.
- wp_options_connectors_wp_admin_preload_data()Preload REST API data for the options-connectors-wp-admin page.
- wp_set_client_side_media_processing_flag()Sets a global JS variable to indicate that client-side media processing is enabled.
Source code
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( (string) preg_replace( '#<script[^>]*>(.*)</script>#is', '$1', $data ) ); } return wp_scripts()->add_inline_script( $handle, $data, $position );}Changelog
Introduced in 4.5.0. Unchanged from 6.7.7 through 7.1.0.
Signature, return type and hooks compared across 5 parsed releases.
About this page
- Parsed data
- Generated from the wordpress-develop 7.1.0 tag, from
src/wp-includes/functions.wp-scripts.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it. - Corrections
- Something wrong on this page? Report it and it gets fixed in the next regeneration.