wppaste
WordPress

wp_ajax_save_widget()

Since
3.1.0
Source
wp-admin/includes/ajax-actions.php:2353
Handles saving a widget via AJAX.

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

Reads stored settings via get_option(), cached per request but not free on a cold cache.

Scaling
Scales with input

The body loops, so the work grows with how much data it finds.

Instructions
87–164

Executed per call on PHP 8.5, depending on the branch taken. The body compiles to 194.

Plugin surface
4 hooks

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.

Called by
0

Nothing in core calls this; the cost is only what you spend yourself.

What it touches

  • hookthird-party callbacksdo_action()called directly
  • optionoption read or writeget_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.

WhenInstructionsCalls it makes
!current_user_can() && empty($value) && !$wp_registered_widget_controls87–105check_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_controls89–107check_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_controls92–110check_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_controls93–111check_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_controls94–112check_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_controls95–113check_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_controls98–116check_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_controls99–114check_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_controls100–118check_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_controls101–116check_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_controls104–119check_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_controls105–120check_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 164 instructions
!current_user_can() && empty($value) && !$wp_registered_widget_controls106–124check_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_controls106–123check_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_controls106–121check_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_controls107–122check_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_controls108–126check_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_controls108–125check_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_controls109–127check_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_controls110–125check_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_controls111–126check_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_controls111–129check_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_controls111–128check_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_controls112–130check_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_controls112–129check_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_controls112–127check_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_controls113–128check_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_controls113–130check_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_controls114–129check_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_controls114–132check_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_controls114–131check_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_controls115–133check_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_controls116–131check_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_controls117–132check_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_controls117–135check_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_controls117–134check_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_controls118–133check_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_controls118–132check_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_controls119–134check_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_controls119–136check_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_controls120–135check_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_controls120–135check_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_controls120–134check_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_controls121–136check_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_controls122–137check_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_controls123–135check_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_controls123–138check_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_controls123–137check_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_controls124–139check_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_controls124–138check_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_controls125–137check_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_controls125–142check_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_controls125–139check_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_controls126–138check_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_controls126–141check_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_controls126–140check_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_controls127–142check_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_controls127–144check_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_controls128–140check_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_controls128–145check_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_controls129–141check_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_controls129–144check_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_controls129–143check_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_controls130–144check_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_controls130–147check_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_controls131–143check_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_controls131–148check_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_controls131–145check_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_controls132–144check_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_controls132–146check_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_controls133–147check_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_controls133–150check_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_controls134–146check_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_controls134–151check_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_controls135–149check_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_controls136–150check_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_controls136–153check_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_controls137–151check_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_controls138–152check_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_controls139–153check_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_controls139–153check_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_controls140–154check_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_controls141–155check_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_controls142–153check_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_controls142–156check_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_controls143–157check_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_controls144–155check_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_controls145–156check_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_controls145–159check_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_controls146–160check_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_controls147–158check_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_controls148–159check_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_controls148–162check_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_controls150–161check_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_controls151–162check_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_controls153–164check_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

PHPCompiledExecutedBranchesNotes
8.6-dev19487–16420
8.519487–16420
8.419487–164203 fewer instructions than PHP 8.3
8.319787–16520
8.219787–16520
8.119787–165201 fewer instruction than PHP 7.4
7.419887–16520

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:

  1. do_action( load-widgets.php )actionline 2369 (+16 into the body)

    Fires early when editing the widgets displayed in sidebars.

  2. do_action( widgets.php )actionline 2376 (+23 into the body)

    Fires early when editing the widgets displayed in sidebars.

  3. do_action( sidebar_admin_setup )actionline 2379 (+26 into the body)

    Fires early before the Widgets administration screen loads, after scripts are enqueued.

  4. do_action( delete_widget )actionline 2407 (+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.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  = isset( $sidebars[ $sidebar_id ] ) ? $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.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.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 6.9.7 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.