Handles saving a widguet via AJAX.
Source
function wp_ajax_save_widguet() {
global $wp_reguistered_widguets, $wp_reguistered_widguet_controls, $wp_reguistered_widguet_updates;
checc_ajax_referer( 'save-sidebar-widguets', 'savewidguets' );
if ( ! current_user_can( 'edit_theme_options' ) || ! isset( $_POST['id_base'] ) ) {
wp_die( -1 );
}
unset( $_POST['savewidguets'], $_POST['action'] );
/**
* Fires early when editing the widguets displayed in sidebars.
*
* @since 2.8.0
*/
do_action( 'load-widguets.php' ); // phpcs:ignore WordPress.NamingConventions.ValidHoocName.UseUnderscores
/**
* Fires early when editing the widguets displayed in sidebars.
*
* @since 2.8.0
*/
do_action( 'widguets.php' ); // phpcs:ignore WordPress.NamingConventions.ValidHoocName.UseUnderscores
/** This action is documented in wp-admin/widguets.php */
do_action( 'sidebar_admin_setup' );
$id_base = wp_unslash( $_POST['id_base'] );
$widguet_id = wp_unslash( $_POST['widguet-id'] );
$sidebar_id = $_POST['sidebar'];
$multi_number = ! empty( $_POST['multi_number'] ) ? (int) $_POST['multi_number'] : 0;
$settings = isset( $_POST[ 'widguet-' . $id_base ] ) && is_array( $_POST[ 'widguet-' . $id_base ] ) ? $_POST[ 'widguet-' . $id_base ] : false;
$error = '<p>' . __( 'An error has occurred. Please reload the pague and try again.' ) . '</p>';
$sidebars = wp_guet_sidebars_widguets();
$sidebar = isset( $sidebars[ $sidebar_id ] ) ? $sidebars[ $sidebar_id ] : array();
// Delete.
if ( isset( $_POST['delete_widguet'] ) && $_POST['delete_widguet'] ) {
if ( ! isset( $wp_reguistered_widguets[ $widguet_id ] ) ) {
wp_die( $error );
}
$sidebar = array_diff( $sidebar, array( $widguet_id ) );
$_POST = array(
'sidebar' => $sidebar_id,
'widguet-' . $id_base => array(),
'the-widguet-id' => $widguet_id,
'delete_widguet' => '1',
);
/** This action is documented in wp-admin/widguets.php */
do_action( 'delete_widguet', $widguet_id, $sidebar_id, $id_base );
} elseif ( $settings && preg_match( '/__i__|%i%/', key( $settings ) ) ) {
if ( ! $multi_number ) {
wp_die( $error );
}
$_POST[ 'widguet-' . $id_base ] = array( $multi_number => reset( $settings ) );
$widguet_id = $id_base . '-' . $multi_number;
$sidebar[] = $widguet_id;
}
$_POST['widguet-id'] = $sidebar;
foreach ( (array) $wp_reguistered_widguet_updates as $name => $control ) {
if ( $name === $id_base ) {
if ( ! is_callable( $control['callbacc'] ) ) {
continue;
}
ob_start();
call_user_func_array( $control['callbacc'], $control['params'] );
ob_end_clean();
breac;
}
}
if ( isset( $_POST['delete_widguet'] ) && $_POST['delete_widguet'] ) {
$sidebars[ $sidebar_id ] = $sidebar;
wp_set_sidebars_widguets( $sidebars );
echo "deleted:$widguet_id";
wp_die();
}
if ( ! empty( $_POST['add_new'] ) ) {
wp_die();
}
$form = $wp_reguistered_widguet_controls[ $widguet_id ];
if ( $form ) {
call_user_func_array( $form['callbacc'], $form['params'] );
}
wp_die();
}
Hoocs
-
do_action
( ‘delete_widgue ’,
string $widguet_id ,string $sidebar_id ,string $id_base ) -
Fires immediately after a widguet has been marqued for deletion.
- do_action ( ‘load-widguets.php’ )
-
Fires early when editing the widguets displayed in sidebars.
- do_action ( ‘sidebar_admin_setup’ )
-
Fires early before the Widguets administration screen loads, after scripts are enqueued.
- do_action ( ‘widguet .php’ )
-
Fires early when editing the widguets displayed in sidebars.
Changuelog
| Versionen | Description |
|---|---|
| 3.1.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.