WC_REST_General_Settings_V4_Controller::get_general_settings_dataprivateWC 1.0

Get general settings data by transforming WC_Settings_General data into REST API format.

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

Хуков нет.

Возвращает

Массив.

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

// private - только в коде основоного (родительского) класса
$result = $this->get_general_settings_data();

Код WC_REST_General_Settings_V4_Controller::get_general_settings_data() WC 10.3.4

private function get_general_settings_data() {
	$settings_general = $this->get_settings_general_instance();
	$raw_settings     = $settings_general->get_settings_for_section( '' );

	// Transform raw settings into grouped format.
	$groups            = array();
	$current_group     = null;
	$current_group_key = null;
	$values            = array();

	foreach ( $raw_settings as $setting ) {
		$setting_type = $setting['type'] ?? '';

		// Handle section titles.
		if ( 'title' === $setting_type ) {
			$current_group_key = $setting['id'] ?? '';
			$current_group     = array(
				'title'       => $setting['title'] ?? '',
				'description' => $setting['desc'] ?? '',
				'order'       => $this->get_group_order( $setting ),
				'fields'      => array(),
			);
			continue;
		}

		// Handle section ends.
		if ( 'sectionend' === $setting_type ) {
			if ( $current_group && $current_group_key ) {
				$groups[ $current_group_key ] = $current_group;
			}
			$current_group     = null;
			$current_group_key = null;
			continue;
		}

		// Skip non-field types.
		if ( in_array( $setting_type, array( 'title', 'sectionend' ), true ) ) {
			continue;
		}

		// Convert setting to field format.
		if ( $current_group && isset( $setting['id'] ) ) {
			$field = $this->transform_setting_to_field( $setting );
			if ( $field ) {
				$current_group['fields'][] = $field;
				// Add field value to the flat values array.
				$values[ $field['id'] ] = get_option( $field['id'], $setting['default'] ?? '' );
			}
		}
	}

	return array(
		'id'          => 'general',
		'title'       => __( 'General', 'woocommerce' ),
		'description' => __( 'Set your store\'s address, visibility, currency, language, and timezone.', 'woocommerce' ),
		'values'      => $values,
		'groups'      => $groups,
	);
}