WC_REST_Setting_Options_V2_Controller::update_item()publicWC 3.0.0

Update a single setting in a group.

Метод класса: WC_REST_Setting_Options_V2_Controller{}

Хуков нет.

Возвращает

WP_Error|WP_REST_Response.

Использование

$WC_REST_Setting_Options_V2_Controller = new WC_REST_Setting_Options_V2_Controller();
$WC_REST_Setting_Options_V2_Controller->update_item( $request );
$request(WP_REST_Request) (обязательный)
Request data.

Список изменений

С версии 3.0.0 Введена.

Код WC_REST_Setting_Options_V2_Controller::update_item() WC 8.7.0

public function update_item( $request ) {
	$setting = $this->get_setting( $request['group_id'], $request['id'] );

	if ( is_wp_error( $setting ) ) {
		return $setting;
	}

	if ( is_callable( array( $this, 'validate_setting_' . $setting['type'] . '_field' ) ) ) {
		$value = $this->{'validate_setting_' . $setting['type'] . '_field'}( $request['value'], $setting );
	} else {
		$value = $this->validate_setting_text_field( $request['value'], $setting );
	}

	if ( is_wp_error( $value ) ) {
		return $value;
	}

	if ( is_array( $setting['option_key'] ) ) {
		$setting['value']       = $value;
		$option_key             = $setting['option_key'];
		$prev                   = get_option( $option_key[0], null ) ?? array();
		$prev[ $option_key[1] ] = $request['value'];
		update_option( $option_key[0], $prev );
	} else {
		$update_data                           = array();
		$update_data[ $setting['option_key'] ] = $value;
		$setting['value']                      = $value;
		WC_Admin_Settings::save_fields( array( $setting ), $update_data );
	}

	$response = $this->prepare_item_for_response( $setting, $request );

	return rest_ensure_response( $response );
}