wp_ajax_save_widguet()

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.