wp_ajax_save_widget()
- Since
- 3.1.0
- Source
wp-admin/includes/ajax-actions.php:2360
Compatibility
- WordPress
- since 3.1.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.
Performance profile
How much work a call to wp_ajax_save_widget() 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
- Heavy
- Scaling
- Scales with input
- Instructions
- 86–163
- Plugin surface
- 4 hooks
- Called by
- 0
Reads stored settings via get_option(), cached per request but not free on a cold cache.
The body loops, so the work grows with how much data it finds.
Executed per call on PHP 8.5, depending on the branch taken. The body compiles to 192.
Third-party callbacks on 'load-widgets.php', 'widgets.php', 'sidebar_admin_setup' run inside this call, and their cost is not bounded by anything here.
Nothing in core calls this; the cost is only what you spend yourself.
What it touches
- hookthird-party callbacks
do_action()called directly - optionoption read or write
get_option()one call below wp_ajax_save_widget()
Further down the call graph this can also reach cache, serialize, query 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 · 96 distinct outcomes
One number would be a lie: the work depends on which branch runs. These are every distinct cost wp_ajax_save_widget() can have, taken from its control-flow graph on PHP 8.5.
| When | Instructions | Calls it makes |
|---|---|---|
!current_user_can() && empty($value) && !$wp_registered_widget_controls | 86–104 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die() |
!current_user_can() && !empty($value) && !$wp_registered_widget_controls | 88–106 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_controls | 91–109 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die() |
!current_user_can() && empty($value) && $wp_registered_widget_controls | 92–110 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), call_user_func_array(), wp_die() |
!current_user_can() && !empty($value) && !$wp_registered_widget_controls | 93–111 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), wp_die() |
!current_user_can() && !empty($value) && $wp_registered_widget_controls | 94–112 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && $wp_registered_widget_controls | 97–115 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && isset($value) && !$wp_registered_widget_controls | 98–113 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_set_sidebars_widgets(), wp_die(), wp_die() |
!current_user_can() && !empty($value) && $wp_registered_widget_controls | 99–117 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && isset($value) && !empty($value) && !$wp_registered_widget_controls | 100–115 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_set_sidebars_widgets(), wp_die(), wp_die(), wp_die() |
!current_user_can() && empty($value) && isset($value) && !$wp_registered_widget_controls | 103–118 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_set_sidebars_widgets(), wp_die(), wp_die() |
!current_user_can() && empty($value) && isset($value) && $wp_registered_widget_controls | 104–119 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_set_sidebars_widgets(), wp_die(), call_user_func_array(), wp_die() |
84 further outcomes, up to 163 instructions
!current_user_can() && empty($value) && !$wp_registered_widget_controls | 105–123 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), reset(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_updates && $name === false && is_callable() && !$wp_registered_widget_controls | 105–122 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die() |
!current_user_can() && isset($value) && !empty($value) && !$wp_registered_widget_controls | 105–120 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_set_sidebars_widgets(), wp_die(), wp_die(), wp_die() |
!current_user_can() && isset($value) && !empty($value) && $wp_registered_widget_controls | 106–121 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_set_sidebars_widgets(), wp_die(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && !empty($value) && !$wp_registered_widget_controls | 107–125 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), reset(), wp_die(), wp_die() |
!current_user_can() && !$wp_registered_widget_updates && $name === false && is_callable() && !empty($value) && !$wp_registered_widget_controls | 107–124 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_controls | 108–126 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), reset(), wp_die() |
!current_user_can() && empty($value) && isset($value) && $wp_registered_widget_controls | 109–124 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_set_sidebars_widgets(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && isset($value) && isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_controls | 110–125 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), do_action(), wp_die() |
!current_user_can() && !empty($value) && !$wp_registered_widget_controls | 110–128 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), reset(), wp_die(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_updates && $name === false && is_callable() && !$wp_registered_widget_controls | 110–127 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die() |
!current_user_can() && empty($value) && $wp_registered_widget_controls | 111–129 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), reset(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_updates && $name === false && is_callable() && $wp_registered_widget_controls | 111–128 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), call_user_func_array(), wp_die() |
!current_user_can() && isset($value) && !empty($value) && $wp_registered_widget_controls | 111–126 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_set_sidebars_widgets(), wp_die(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && isset($value) && isset($wp_registered_widgets[$widget_id]) && !empty($value) && !$wp_registered_widget_controls | 112–127 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), do_action(), wp_die(), wp_die() |
!current_user_can() && !$wp_registered_widget_updates && $name === false && is_callable() && !empty($value) && !$wp_registered_widget_controls | 112–129 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die(), wp_die() |
!current_user_can() && empty($value) && isset($value) && !isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_controls | 113–128 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), do_action(), wp_die() |
!current_user_can() && !empty($value) && $wp_registered_widget_controls | 113–131 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), reset(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && !$wp_registered_widget_updates && $name === false && is_callable() && !empty($value) && $wp_registered_widget_controls | 113–130 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && $wp_registered_widget_controls | 114–132 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), reset(), call_user_func_array(), wp_die() |
!current_user_can() && isset($value) && !isset($wp_registered_widgets[$widget_id]) && !empty($value) && !$wp_registered_widget_controls | 115–130 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), do_action(), wp_die(), wp_die() |
!current_user_can() && empty($value) && isset($value) && isset($wp_registered_widgets[$widget_id]) && $wp_registered_widget_controls | 116–131 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), do_action(), call_user_func_array(), wp_die() |
!current_user_can() && !empty($value) && $wp_registered_widget_controls | 116–134 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), reset(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_updates && $name === false && is_callable() && $wp_registered_widget_controls | 116–133 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && isset($value) && !$wp_registered_widget_controls | 117–132 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), reset(), wp_set_sidebars_widgets(), wp_die(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_updates && $name === false && is_callable() && isset($value) && !$wp_registered_widget_controls | 117–131 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die() |
!current_user_can() && isset($value) && isset($wp_registered_widgets[$widget_id]) && !empty($value) && $wp_registered_widget_controls | 118–133 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), do_action(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && !$wp_registered_widget_updates && $name === false && is_callable() && !empty($value) && $wp_registered_widget_controls | 118–135 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && isset($value) && !isset($wp_registered_widgets[$widget_id]) && $wp_registered_widget_controls | 119–134 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), do_action(), call_user_func_array(), wp_die() |
!current_user_can() && isset($value) && !empty($value) && !$wp_registered_widget_controls | 119–134 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), reset(), wp_set_sidebars_widgets(), wp_die(), wp_die(), wp_die() |
!current_user_can() && !$wp_registered_widget_updates && $name === false && is_callable() && isset($value) && !empty($value) && !$wp_registered_widget_controls | 119–133 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die(), wp_die() |
!current_user_can() && empty($value) && isset($value) && !$wp_registered_widget_controls | 120–135 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), reset(), wp_set_sidebars_widgets(), wp_die(), wp_die() |
!current_user_can() && isset($value) && !isset($wp_registered_widgets[$widget_id]) && !empty($value) && $wp_registered_widget_controls | 121–136 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), do_action(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && isset($value) && isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_controls | 122–134 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), do_action(), wp_set_sidebars_widgets(), wp_die(), wp_die() |
!current_user_can() && isset($value) && !empty($value) && !$wp_registered_widget_controls | 122–137 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), reset(), wp_set_sidebars_widgets(), wp_die(), wp_die(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_updates && $name === false && is_callable() && isset($value) && !$wp_registered_widget_controls | 122–136 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die() |
!current_user_can() && empty($value) && isset($value) && $wp_registered_widget_controls | 123–138 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), reset(), wp_set_sidebars_widgets(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_updates && $name === false && is_callable() && isset($value) && $wp_registered_widget_controls | 123–137 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && isset($value) && isset($wp_registered_widgets[$widget_id]) && !empty($value) && !$wp_registered_widget_controls | 124–136 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), do_action(), wp_set_sidebars_widgets(), wp_die(), wp_die(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_updates && $name === false && is_callable() && !$wp_registered_widget_controls | 124–141 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), reset(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die() |
!current_user_can() && !$wp_registered_widget_updates && $name === false && is_callable() && isset($value) && !empty($value) && !$wp_registered_widget_controls | 124–138 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die(), wp_die() |
!current_user_can() && empty($value) && isset($value) && !isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_controls | 125–137 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), do_action(), wp_set_sidebars_widgets(), wp_die(), wp_die() |
!current_user_can() && isset($value) && !empty($value) && $wp_registered_widget_controls | 125–140 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), reset(), wp_set_sidebars_widgets(), wp_die(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && !$wp_registered_widget_updates && $name === false && is_callable() && isset($value) && !empty($value) && $wp_registered_widget_controls | 125–139 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && isset($value) && $wp_registered_widget_controls | 126–141 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), reset(), wp_set_sidebars_widgets(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && !$wp_registered_widget_updates && $name === false && is_callable() && !empty($value) && !$wp_registered_widget_controls | 126–143 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), reset(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die(), wp_die() |
!current_user_can() && isset($value) && !isset($wp_registered_widgets[$widget_id]) && !empty($value) && !$wp_registered_widget_controls | 127–139 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), do_action(), wp_set_sidebars_widgets(), wp_die(), wp_die(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_updates && $name === false && is_callable() && !$wp_registered_widget_controls | 127–144 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), reset(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die() |
!current_user_can() && empty($value) && isset($value) && isset($wp_registered_widgets[$widget_id]) && $wp_registered_widget_controls | 128–140 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), do_action(), wp_set_sidebars_widgets(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && isset($value) && !empty($value) && $wp_registered_widget_controls | 128–143 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), reset(), wp_set_sidebars_widgets(), wp_die(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_updates && $name === false && is_callable() && isset($value) && $wp_registered_widget_controls | 128–142 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && isset($value) && isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_updates && $name === false && is_callable() && !$wp_registered_widget_controls | 129–143 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), do_action(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die() |
!current_user_can() && !$wp_registered_widget_updates && $name === false && is_callable() && !empty($value) && !$wp_registered_widget_controls | 129–146 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), reset(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die(), wp_die() |
!current_user_can() && isset($value) && isset($wp_registered_widgets[$widget_id]) && !empty($value) && $wp_registered_widget_controls | 130–142 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), do_action(), wp_set_sidebars_widgets(), wp_die(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_updates && $name === false && is_callable() && $wp_registered_widget_controls | 130–147 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), reset(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), call_user_func_array(), wp_die() |
!current_user_can() && !$wp_registered_widget_updates && $name === false && is_callable() && isset($value) && !empty($value) && $wp_registered_widget_controls | 130–144 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && isset($value) && !isset($wp_registered_widgets[$widget_id]) && $wp_registered_widget_controls | 131–143 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), do_action(), wp_set_sidebars_widgets(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && isset($value) && isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_updates && $name === false && is_callable() && !empty($value) && !$wp_registered_widget_controls | 131–145 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), do_action(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die(), wp_die() |
!current_user_can() && empty($value) && isset($value) && !isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_updates && $name === false && is_callable() && !$wp_registered_widget_controls | 132–146 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), do_action(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die() |
!current_user_can() && !$wp_registered_widget_updates && $name === false && is_callable() && !empty($value) && $wp_registered_widget_controls | 132–149 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), reset(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && isset($value) && !isset($wp_registered_widgets[$widget_id]) && !empty($value) && $wp_registered_widget_controls | 133–145 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), do_action(), wp_set_sidebars_widgets(), wp_die(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_updates && $name === false && is_callable() && $wp_registered_widget_controls | 133–150 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), reset(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), call_user_func_array(), wp_die() |
!current_user_can() && isset($value) && !isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_updates && $name === false && is_callable() && !empty($value) && !$wp_registered_widget_controls | 134–148 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), do_action(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die(), wp_die() |
!current_user_can() && empty($value) && isset($value) && isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_updates && $name === false && is_callable() && $wp_registered_widget_controls | 135–149 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), do_action(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), call_user_func_array(), wp_die() |
!current_user_can() && !$wp_registered_widget_updates && $name === false && is_callable() && !empty($value) && $wp_registered_widget_controls | 135–152 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), reset(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_updates && $name === false && is_callable() && isset($value) && !$wp_registered_widget_controls | 136–150 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), reset(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die() |
!current_user_can() && isset($value) && isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_updates && $name === false && is_callable() && !empty($value) && $wp_registered_widget_controls | 137–151 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), do_action(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && isset($value) && !isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_updates && $name === false && is_callable() && $wp_registered_widget_controls | 138–152 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), do_action(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), call_user_func_array(), wp_die() |
!current_user_can() && !$wp_registered_widget_updates && $name === false && is_callable() && isset($value) && !empty($value) && !$wp_registered_widget_controls | 138–152 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), reset(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_updates && $name === false && is_callable() && isset($value) && !$wp_registered_widget_controls | 139–153 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), reset(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die() |
!current_user_can() && isset($value) && !isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_updates && $name === false && is_callable() && !empty($value) && $wp_registered_widget_controls | 140–154 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), do_action(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && isset($value) && isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_updates && $name === false && is_callable() && !$wp_registered_widget_controls | 141–152 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), do_action(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die() |
!current_user_can() && !$wp_registered_widget_updates && $name === false && is_callable() && isset($value) && !empty($value) && !$wp_registered_widget_controls | 141–155 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), reset(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_updates && $name === false && is_callable() && isset($value) && $wp_registered_widget_controls | 142–156 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), reset(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && isset($value) && isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_updates && $name === false && is_callable() && !empty($value) && !$wp_registered_widget_controls | 143–154 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), do_action(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die(), wp_die() |
!current_user_can() && empty($value) && isset($value) && !isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_updates && $name === false && is_callable() && !$wp_registered_widget_controls | 144–155 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), do_action(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die() |
!current_user_can() && !$wp_registered_widget_updates && $name === false && is_callable() && isset($value) && !empty($value) && $wp_registered_widget_controls | 144–158 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), reset(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && !$wp_registered_widget_updates && $name === false && is_callable() && isset($value) && $wp_registered_widget_controls | 145–159 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), reset(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && isset($value) && !isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_updates && $name === false && is_callable() && !empty($value) && !$wp_registered_widget_controls | 146–157 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), do_action(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die(), wp_die() |
!current_user_can() && empty($value) && isset($value) && isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_updates && $name === false && is_callable() && $wp_registered_widget_controls | 147–158 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), do_action(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && !$wp_registered_widget_updates && $name === false && is_callable() && isset($value) && !empty($value) && $wp_registered_widget_controls | 147–161 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), key(), wp_die(), reset(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && isset($value) && isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_updates && $name === false && is_callable() && !empty($value) && $wp_registered_widget_controls | 149–160 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), do_action(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && empty($value) && isset($value) && !isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_updates && $name === false && is_callable() && $wp_registered_widget_controls | 150–161 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), do_action(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), call_user_func_array(), wp_die() |
!current_user_can() && isset($value) && !isset($wp_registered_widgets[$widget_id]) && !$wp_registered_widget_updates && $name === false && is_callable() && !empty($value) && $wp_registered_widget_controls | 152–163 | check_ajax_referer(), current_user_can(), wp_die(), do_action(), do_action(), do_action(), wp_unslash(), wp_unslash(), __(), wp_get_sidebars_widgets(), wp_die(), do_action(), is_callable(), ob_start(), call_user_func_array(), ob_end_clean(), wp_set_sidebars_widgets(), wp_die(), wp_die(), call_user_func_array(), wp_die() |
This body has more branch combinations than are worth enumerating, so the table covers the outcomes found first rather than every one that exists.
Across PHP versions
| PHP | Compiled | Executed | Branches | Notes |
|---|---|---|---|---|
| 8.6-dev | 192 | 86–163 | 20 | |
| 8.5 | 192 | 86–163 | 20 | |
| 8.4 | 192 | 86–163 | 20 | 3 fewer instructions than PHP 8.3 |
| 8.3 | 195 | 86–164 | 20 | |
| 8.2 | 195 | 86–164 | 20 | |
| 8.1 | 195 | 86–164 | 20 | |
| 7.4 | 195 | 86–164 | 20 |
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.
Hooks and filters fired · 4
4 hooks fire while wp_ajax_save_widget() runs, in this order:
- do_action( load-widgets.php )actionline 2376 (+16 into the body)
Fires early when editing the widgets displayed in sidebars.
- do_action( widgets.php )actionline 2383 (+23 into the body)
Fires early when editing the widgets displayed in sidebars.
- do_action( sidebar_admin_setup )actionline 2386 (+26 into the body)
Fires early before the Widgets administration screen loads, after scripts are enqueued.
- do_action( delete_widget )actionline 2414 (+54 into the body)
Fires immediately after a widget has been marked for deletion.
Uses · 8
- check_ajax_referer()Verifies the Ajax request to prevent processing requests external of the blog.
- current_user_can()Returns whether the current user has the specified capability.
- wp_die()Kills WordPress execution and displays HTML page with an error message.
- do_action()Calls the callback functions that have been added to an action hook.
- wp_unslash()Removes slashes from a string or recursively removes slashes from strings within an array.
- __()Retrieves the translation of $text.
- wp_get_sidebars_widgets()Retrieves the full list of sidebars and their widget instance IDs.
- wp_set_sidebars_widgets()Sets the sidebar widget option to update sidebars.
Source code
function wp_ajax_save_widget() { global $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates; check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' ); if ( ! current_user_can( 'edit_theme_options' ) || ! isset( $_POST['id_base'] ) ) { wp_die( -1 ); } unset( $_POST['savewidgets'], $_POST['action'] ); /** * Fires early when editing the widgets displayed in sidebars. * * @since 2.8.0 */ do_action( 'load-widgets.php' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores /** * Fires early when editing the widgets displayed in sidebars. * * @since 2.8.0 */ do_action( 'widgets.php' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores /** This action is documented in wp-admin/widgets-form.php */ do_action( 'sidebar_admin_setup' ); $id_base = wp_unslash( $_POST['id_base'] ); $widget_id = wp_unslash( $_POST['widget-id'] ); $sidebar_id = $_POST['sidebar']; $multi_number = ! empty( $_POST['multi_number'] ) ? (int) $_POST['multi_number'] : 0; $settings = isset( $_POST[ 'widget-' . $id_base ] ) && is_array( $_POST[ 'widget-' . $id_base ] ) ? $_POST[ 'widget-' . $id_base ] : false; $error = '<p>' . __( 'An error has occurred. Please reload the page and try again.' ) . '</p>'; $sidebars = wp_get_sidebars_widgets(); $sidebar = $sidebars[ $sidebar_id ] ?? array(); // Delete. if ( isset( $_POST['delete_widget'] ) && $_POST['delete_widget'] ) { if ( ! isset( $wp_registered_widgets[ $widget_id ] ) ) { wp_die( $error ); } $sidebar = array_diff( $sidebar, array( $widget_id ) ); $_POST = array( 'sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1', ); /** This action is documented in wp-admin/widgets-form.php */ do_action( 'delete_widget', $widget_id, $sidebar_id, $id_base ); } elseif ( $settings && preg_match( '/__i__|%i%/', key( $settings ) ) ) { if ( ! $multi_number ) { wp_die( $error ); } $_POST[ 'widget-' . $id_base ] = array( $multi_number => reset( $settings ) ); $widget_id = $id_base . '-' . $multi_number; $sidebar[] = $widget_id; } $_POST['widget-id'] = $sidebar; foreach ( (array) $wp_registered_widget_updates as $name => $control ) { if ( $name === $id_base ) { if ( ! is_callable( $control['callback'] ) ) { continue; } ob_start(); call_user_func_array( $control['callback'], $control['params'] ); ob_end_clean(); break; } }Changelog
Introduced in 3.1.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.0.4 tag, from
src/wp-admin/includes/ajax-actions.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.