remove_query_arg( string|string[] $key, false|string $query = false ): string
- Since
- 1.5.0
- Source
wp-includes/functions.php:1213
Description
Important: The return value of remove_query_arg() is not escaped by default. Output should be late-escaped with esc_url() or similar to help prevent vulnerability to cross-site scripting (XSS) attacks.
Compatibility
- WordPress
- since 1.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
$keystring|string[]- Query key or keys to remove.
$queryfalse|stringoptional- When false uses the current URL. Default false.Default:
false
Return value
string- New URL query string.
Performance profile
How much work a call to remove_query_arg() 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
- Light
- Scaling
- Scales with input
- Instructions
- 7–10
- Plugin surface
- None
- Called by
- 24
Touches nothing outside its own arguments.
The body loops, so the work grows with what you pass in.
Executed per call on PHP 8.5, depending on the branch taken. The body compiles to 21.
Nothing here hands control to plugin code.
24 places in core call this, so the cost is paid more often than your own code shows.
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 remove_query_arg() can have, taken from its control-flow graph on PHP 8.5.
| When | Instructions | Calls it makes |
|---|---|---|
is_array($key) | 7–8 | none |
!is_array($key) | 10 | add_query_arg() |
Across PHP versions
Compiles the same on PHP 7.4, 8.1, 8.2, 8.3, 8.4, 8.5 and 8.6-dev: 21 instructions, 7–10 executed per call, 3 branches. The work does not change between versions.
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 · 1
- add_query_arg()Retrieves a modified URL query string.
Used by · 24
- WP_Comments_List_Table::get_views()
- WP_Customize_Manager::customize_preview_settings()Prints JavaScript settings for preview frame.
- WP_Customize_Manager::set_return_url()Sets URL to link the user to when closing the Customizer.
- WP_List_Table::pagination()Displays the pagination.
- WP_List_Table::print_column_headers()Prints column headers, accounting for hidden and sortable columns.
- WP_List_Table::view_switcher()Displays a view switcher.
- Walker_Nav_Menu_Edit::start_el()Start the element output.
- _post_format_link()Filters the post format term link to remove the format prefix.
- _remove_qs_args_if_not_in_url()Removes arguments from a query string if they are not present in a URL DO NOT use this in plugin code.
- get_cancel_comment_reply_link()Retrieves HTML content for cancel comment reply link.
- get_pagenum_link()Retrieves the link for a page number.
- redirect_canonical()Redirects incoming links to the proper URL based on the site url.
Show all 24
- set_screen_options()Saves option for number of rows when listing posts, pages, comments, etc.
- twentyfourteen_paging_nav()Display navigation to next/previous set of posts when applicable.
- wp_admin_bar_customize_menu()Adds the "Customize" link to the Toolbar.
- wp_admin_canonical_url()Removes single-use URL parameters and create canonical link based on new URL.
- wp_dashboard_setup()Registers dashboard widgets.
- wp_media_attach_action()Encapsulates the logic for Attach/Detach actions.
- wp_nav_menu_item_post_type_meta_box()Displays a meta box for a post type menu item.
- wp_nav_menu_item_taxonomy_meta_box()Displays a meta box for a taxonomy menu item.
- wp_nonce_ays()Displays "Are You Sure" message to confirm the action being taken.
- wp_prepare_themes_for_js()Prepares themes for JavaScript.
- wp_referer_field()Retrieves or displays referer hidden field for forms.
- wp_video_shortcode()Builds the Video shortcode output.
Source code
function remove_query_arg( $key, $query = false ) { if ( is_array( $key ) ) { // Removing multiple keys. foreach ( $key as $k ) { $query = add_query_arg( $k, false, $query ); } return $query; } return add_query_arg( $key, false, $query );}Changelog
Introduced in 1.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 6.7.7 tag, from
src/wp-includes/functions.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.