FILE: /var/www/html/wp-includes/build/pages/options-connectors/page-wp-admin.php
SIZE: 10290 bytes
MODIFIED: 2026-08-26 05:34:27

CONTENT:
<?php
/**
 * Page: options-connectors (wp-admin integrated)
 * Auto-generated by build process.
 * Do not edit this file manually.
 *
 * This version integrates with the standard WordPress admin interface,
 * keeping the wp-admin sidebar and scripts/styles intact.
 *
 * @package wp
 */

// Global storage for options-connectors routes and menu items
global $wp_options_connectors_wp_admin_routes, $wp_options_connectors_wp_admin_menu_items;
$wp_options_connectors_wp_admin_routes     = array();
$wp_options_connectors_wp_admin_menu_items = array();

/**
 * Register a route for the options-connectors-wp-admin page.
 *
 * @param string      $path           Route path (e.g., '/types/$type/edit/$id').
 * @param string|null $content_module Script module ID for content (stage/inspector).
 * @param string|null $route_module   Script module ID for route lifecycle hooks.
 */
function wp_register_options_connectors_wp_admin_route( $path, $content_module = null, $route_module = null ) {
	global $wp_options_connectors_wp_admin_routes;

	$route = array( 'path' => $path );
	if ( ! empty( $content_module ) ) {
		$route['content_module'] = $content_module;
	}
	if ( ! empty( $route_module ) ) {
		$route['route_module'] = $route_module;
	}

	$wp_options_connectors_wp_admin_routes[] = $route;
}

/**
 * Register a menu item for the options-connectors-wp-admin page.
 * Note: Menu items are registered but not displayed in single-page mode.
 *
 * @param string $id        Menu item ID.
 * @param string $label     Display label.
 * @param string $to        Route path to navigate to.
 * @param string $parent_id Optional. Parent menu item ID.
 */
function wp_register_options_connectors_wp_admin_menu_item( $id, $label, $to, $parent_id = '' ) {
	global $wp_options_connectors_wp_admin_menu_items;

	$menu_item = array(
		'id'    => $id,
		'label' => $label,
		'to'    => $to,
	);

	if ( ! empty( $parent_id ) ) {
		$menu_item['parent'] = $parent_id;
	}

	$wp_options_connectors_wp_admin_menu_items[] = $menu_item;
}

/**
 * Get all registered routes for the options-connectors-wp-admin page.
 *
 * @return array Array of route objects.
 */
function wp_get_options_connectors_wp_admin_routes() {
	global $wp_options_connectors_wp_admin_routes;
	return $wp_options_connectors_wp_admin_routes ?? array();
}

/**
 * Get all registered menu items for the options-connectors-wp-admin page.
 *
 * @return array Array of menu item objects.
 */
function wp_get_options_connectors_wp_admin_menu_items() {
	global $wp_options_connectors_wp_admin_menu_items;
	return $wp_options_connectors_wp_admin_menu_items ?? array();
}

/**
 * Preload REST API data for the options-connectors-wp-admin page.
 * Automatically called during page rendering.
 */
function wp_options_connectors_wp_admin_preload_data() {
	// Define paths to preload - same for all pages
	// This must exactly match the _fields list in packages/core-data/src/entities.js,
	// same fields in the same order, or the preload is never consumed.
	$preload_paths = array(
		'/?_fields=description,gmt_offset,home,image_max_bit_depth,image_sizes,image_size_threshold,image_strip_meta,name,site_icon,site_icon_url,site_logo,timezone_string,url,page_for_posts,page_on_front,show_on_front',
		array( '/wp/v2/settings', 'OPTIONS' ),
	);

	// Use rest_preload_api_request to gather the preloaded data
	$preload_data = array_reduce(
		$preload_paths,
		'rest_preload_api_request',
		array()
	);

	// Register the preloading middleware with wp-api-fetch
	wp_add_inline_script(
		'wp-api-fetch',
		sprintf(
			'wp.apiFetch.use( wp.apiFetch.createPreloadingMiddleware( %s ) );',
			wp_json_encode( $preload_data )
		),
		'after'
	);
}

/**
 * Enqueue scripts and styles for the options-connectors-wp-admin page.
 * Hooked to admin_enqueue_scripts.
 *
 * @param string $hook_suffix The current admin page.
 */
function wp_options_connectors_wp_admin_enqueue_scripts( $hook_suffix ) {
	// Check all possible ways this page can be accessed:
	// 1. Menu page via admin.php?page=options-connectors-wp-admin (plugin)
	// 2. Direct file via options-connectors.php (Core) - screen ID will be 'options-connectors'
	$current_screen = get_current_screen();
	$is_our_page = (
		( isset( $_GET['page'] ) && 'options-connectors-wp-admin' === $_GET['page'] ) || // phpcs:ignore WordPress.Security.NonceVerification.Recommended
		( $current_screen && 'options-connectors' === $current_screen->id )
	);

	if ( ! $is_our_page ) {
		return;
	}

	// Load build constants
	$build_constants = require __DIR__ . '/../../constants.php';

	/**
	 * Fires when the options-connectors admin page is initialized so extensions can register routes and menu items.
	 */
	do_action( 'options-connectors-wp-admin_init' );

	// Preload REST API data
	wp_options_connectors_wp_admin_preload_data();

	// Get all registered routes
	$routes = wp_get_options_connectors_wp_admin_routes();

	// Get boot module asset file for dependencies
	$asset_file = ABSPATH . WPINC . '/js/dist/script-modules/boot/index.min.asset.php';
	if ( file_exists( $asset_file ) ) {
		$asset = require $asset_file;

		// This script serves two purposes:
		// 1. It ensures all the globals that are made available to the modules are loaded.
		// 2. It initializes the boot module as an inline script.
		wp_register_script( 'options-connectors-wp-admin-prerequisites', '', $asset['dependencies'], $asset['version'], true );

		$init_modules = [];

		/*
		 * Add inline script to initialize the app using initSinglePage (no menuItems).
		 * The dynamic import is deferred until DOMContentLoaded so that all classic
		 * script dependencies of @wordpress/boot (wp-private-apis, wp-components,
		 * wp-theme, etc.) have finished parsing and executing before the boot module
		 * evaluates. Otherwise, a modulepreloaded @wordpress/boot can win the race
		 * against the classic-script-printing pass on fast CDN-fronted hosts in
		 * Chrome, evaluating before wp.theme.privateApis is defined and throwing
		 * "Cannot unlock an undefined object". See <https://core.trac.wordpress.org/ticket/65103>.
		 */
		$init_js_function = <<<'JS'
		( mountId, routes, initModules ) => {
			const run = async () => {
				const mod = await import( "@wordpress/boot" );
				mod.initSinglePage( { mountId, routes, initModules } );
			};
			if ( document.readyState === "loading" ) {
				document.addEventListener( "DOMContentLoaded", run );
			} else {
				run();
			}
		}
		JS;
		wp_add_inline_script(
			'options-connectors-wp-admin-prerequisites',
			sprintf(
				'( %s )( %s, %s, %s );',
				$init_js_function,
				wp_json_encode( 'options-connectors-wp-admin-app', JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ),
				wp_json_encode( $routes, JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ),
				wp_json_encode( $init_modules, JSON_HEX_TAG | JSON_UNESCAPED_SLASHES )
			)
		);

		// Register prerequisites style by filtering script dependencies to find registered styles
		$style_dependencies = array_filter(
			$asset['dependencies'],
			function ( $handle ) {
				return wp_style_is( $handle, 'registered' );
			}
		);
		wp_register_style( 'options-connectors-wp-admin-prerequisites', false, $style_dependencies, $asset['version'] );

		// Build dependencies for options-connectors-wp-admin module
		$boot_dependencies = array(
			array(
				'import' => 'static',
				'id'     => '@wordpress/boot',
			),
		);

		// Add init modules as static dependencies
			// No init modules configured

		// Add all registered routes as dependencies
		foreach ( $routes as $route ) {
			if ( isset( $route['route_module'] ) ) {
				$boot_dependencies[] = array(
					'import' => 'static',
					'id'     => $route['route_module'],
				);
			}
			if ( isset( $route['content_module'] ) ) {
				$boot_dependencies[] = array(
					'import' => 'dynamic',
					'id'     => $route['content_module'],
				);
			}
		}

		/**
		 * Filters the boot script-module dependencies for the
		 * options-connectors-wp-admin page.
		 *
		 * Surfaces extending this page can append entries to the boot
		 * dependency list. Each entry is an array with 'import' (string
		 * 'static' or 'dynamic') and 'id' (script-module handle) keys.
		 *
		 * @param array $boot_dependencies Boot dependencies for the page.
		 */
		$boot_dependencies = apply_filters(
			'options-connectors-wp-admin_boot_dependencies',
			$boot_dependencies
		);

		// Dummy script module to ensure dependencies are loaded
		wp_register_script_module(
			'options-connectors-wp-admin',
			$build_constants['build_url'] . 'pages/options-connectors/loader.js',
			$boot_dependencies
		);

		// Enqueue the boot scripts and styles
		wp_enqueue_script( 'options-connectors-wp-admin-prerequisites' );
		wp_enqueue_script_module( 'options-connectors-wp-admin' );
		wp_enqueue_style( 'options-connectors-wp-admin-prerequisites' );
	}
}

/**
 * Render the options-connectors-wp-admin page.
 * Call this function from add_menu_page or add_submenu_page.
 * This renders within the normal WordPress admin interface.
 */
function wp_options_connectors_wp_admin_render_page() {
	?>
	<style>
		/* Critical styles to prevent layout shifts - inlined for immediate application */

		#wpwrap {
			overflow-y: auto;
		}
		body.js {
			background: #fff;
		}

		/* Reset wp-admin padding */
		body.js #wpcontent {
			padding-inline-start: 0;
		}
		body.js #wpbody-content {
			padding-bottom: 0;
		}

		/* Hide legacy admin elements */
		body.js #wpbody-content > div:not(.boot-layout-container):not(#screen-meta) {
			display: none;
		}
		body.js #wpfooter {
			display: none;
		}

		/* Accessibility regions */
		.a11y-speak-region {
			inset-inline-start: -1px;
			top: -1px;
		}

		/* Admin menu indicators */
		ul#adminmenu a.wp-has-current-submenu::after,
		ul#adminmenu > li.current > a.current::after {
			border-inline-end-color: #fff;
		}

		/* Media frame fix */
		.media-frame select.attachment-filters:last-of-type {
			width: auto;
			max-width: 100%;
		}

		/* Responsive overflow fix for #wpwrap */
		@media (min-width: 782px) {
			#wpwrap {
				overflow-y: initial;
			}
		}
	</style>
	<div id="options-connectors-wp-admin-app" class="boot-layout-container"></div>
	<?php
}

// Hook the enqueue function to admin_enqueue_scripts
add_action( 'admin_enqueue_scripts', 'wp_options_connectors_wp_admin_enqueue_scripts' );

현대 쏘나타 동급? "가격 40%↓·연비 1.5배↑" 서울-부산 4회 왕복 세단
주요 메뉴 바로가기 (상단) 본문 컨텐츠 바로가기 주요 메뉴 바로가기 (하단)

현대 쏘나타 동급? “가격 40%↓·연비 1.5배↑” 서울-부산 4회 왕복 세단

구글 검색 선호 출처로 추가

Google 검색에서 뷰어스 기사를 더 자주 볼 수 있습니다.

갤러시 A7 EM-i [사진 = 지리자동차]

갤러시 A7 EM-i [사진 = 지리자동차]

(래디언스리포트 정서진 기자) ‘중국차는 싸기만 하다’는 인식은 이제 옛말이 될지도 모른다. 최근 공개된 한 중형 세단이 국내 소비자들의 관심을 끌고 있다. 현대 쏘나타 하이브리드와 비슷한 체급이지만, 연비는 무려 1.5배, 가격은 40%나 저렴하다는 이 차량은 서울과 부산을 무려 4번이나 왕복할 수 있을 만큼 긴 주행거리를 자랑한다.

2025년 6월 3일, 중국 지리자동차는 자사의 하위 브랜드 ‘갤럭시’를 통해 중형 플러그인 하이브리드(PHEV) 세단 ‘갤럭시 A7 EM-i’를 공식 공개했다. 이번 모델은 낮은 연료 소비와 긴 주행거리를 앞세운 실용적인 하이브리드 세단으로, 출시 초기부터 국내외 자동차 업계의 주목을 받고 있다.

갤럭시 A7 EM-i의 가장 큰 특징은 바로 압도적인 주행거리다. 제조사에 따르면 이 차량은 전기 충전과 주유를 병행할 경우, 최대 2100km 이상 주행이 가능하다. 이는 연비 약 50km/L 수준으로, 일반적인 중형 하이브리드 세단의 주행 가능 거리보다 150% 이상 긴 수치다. 참고로 현대 쏘나타 하이브리드의 복합 주행거리는 약 840km 수준이다.

갤러시 A7 EM-i [사진 = 지리자동차]
갤러시 A7 EM-i [사진 = 지리자동차]

가격 경쟁력도 눈에 띈다. 갤럭시 A7 EM-i의 시작가는 한화 약 1890만원으로, 쏘나타 하이브리드(기본형 기준 약 3232만원)보다 1300만원 이상 저렴하다. ‘소나타급’ 차량을 절반에 가까운 가격으로 구매할 수 있다는 점은 가성비를 중요시하는 실속형 소비자들에게 강한 매력으로 다가올 수밖에 없다.

차량의 체급은 전장 4918mm, 전폭 1905mm, 전고 1495mm, 휠베이스 2845mm로, 전체적으로 쏘나타와 유사하거나 오히려 소폭 넓은 수준이다. 외관은 날렵한 LED 헤드램프, 수평형 라이트 스트립, 대형 하단 공기 흡입구 등을 통해 스포티한 인상을 주며, 측면의 캐릭터 라인과 멀티 스포크 휠, 블랙 윈도우 트림 등은 세련된 감각을 보여준다.

실내 구성 역시 최신 전기차 트렌드를 반영하고 있다. 대형 디지털 계기판과 플로팅 타입의 중앙 인포테인먼트 디스플레이, 듀얼 스포크 스티어링 휠 등이 탑재되어 있으며, 물리 버튼과 회전식 다이얼의 조합은 조작 편의성을 높였다. 플립업 컵홀더, 터치식 에어컨 버튼 등 세세한 부분까지 실용성을 고려한 설계가 돋보인다.

갤러시 A7 EM-i [사진 = 지리자동차]
갤러시 A7 EM-i [사진 = 지리자동차]

‘싼 맛’이 아닌 ‘스마트 선택’? 기술력은 아직 물음표

이처럼 뛰어난 가성비를 앞세운 A7 EM-i지만, 기술력에 대한 검증은 조금 더 시간이 필요하다. 파워트레인은 1.5리터 가솔린 엔진과 전기 모터의 조합으로 구성되며, 전기 모드 주행거리는 배터리 사양에 따라 60km와 130km 두 가지로 제공된다. 시스템 총 출력은 공식 발표되지 않았지만, 상위 모델인 스타 8 EM-i의 350마력에 준하는 성능이 예상된다.

변속기는 DHT 단일 속도 기어 방식이 적용되며, 배터리는 리튬인산철(LFP) 기반으로 내구성과 안정성을 확보했다는 평가다. 그러나 이와 같은 수치는 아직 실도로 조건에서의 검증이 부족한 상태로, 실제 주행 상황에서의 연비 효율과 주행 성능에 대한 확인은 향후 출시 후 소비자 리뷰나 테스트를 통해 확인될 필요가 있다.

특히 주목할 점은 자율주행 보조 시스템이다. 갤럭시 A7 EM-i는 라이다 센서를 포함한 첨단 운전자 보조 기능(ADAS)을 탑재해 부분 자율주행을 지원할 것으로 보인다. 이는 단순한 ‘저가형 중국차’ 이미지에서 벗어나려는 전략으로 해석되며, 앞으로 출시될 정식 모델에서 구체적인 기능 수준이 공개될 예정이다.

갤러시 A7 EM-i [사진 = 지리자동차]
갤러시 A7 EM-i [사진 = 지리자동차]

PHEV에 집중하는 중국차, 국내 소비자에게 어떤 의미일까

중국은 최근 플러그인 하이브리드(PHEV) 시장을 강하게 밀어붙이고 있다. 전기차(EV)의 충전 인프라 부족과 배터리 원가 상승 문제에 대한 현실적인 대응책으로 PHEV 기술을 중심에 놓은 것이다. A7 EM-i도 이러한 흐름 속에서 등장한 대표적 모델로, 중국 내에서는 물론 유럽 시장까지 공략하려는 전략이 반영됐다.

특히 유럽연합(EU)은 중국산 순수 전기차에는 최대 45% 이상의 관세를 부과하고 있는 반면, PHEV 모델에는 기존 10% 수준의 낮은 관세만 적용하고 있어, 중국 자동차 기업들이 전략적으로 PHEV를 중심으로 수출 포트폴리오를 바꾸고 있다. 이는 단순한 ‘가성비 경쟁’을 넘어 중국차가 글로벌 자동차 시장의 규칙을 바꾸고 있음을 보여주는 단서다.

하지만 국내 시장에서의 반응은 아직 미지수다. 낮은 가격과 긴 주행거리만으로는 신뢰를 얻기 어렵고, 브랜드 이미지와 A/S, 보증 체계 등 실질적 소비자 서비스 측면에서도 경쟁력을 갖춰야 한다. 특히 자율주행이나 첨단 기능이 화려하게 소개되더라도, 실제 사용자의 평가와 사후 지원이 따라주지 않으면 단기간 신기루에 그칠 수 있다.

갤러시 A7 EM-i [사진 = 지리자동차]
갤러시 A7 EM-i [사진 = 지리자동차]

“싸고 멀리 간다”의 이면… 실제 가격과 연비, 믿어도 될까?

갤럭시 A7 EM-i는 뛰어난 연비 효율과 상대적으로 낮은 가격을 앞세워 중형 하이브리드 세단 시장에 새로운 변수로 떠오르고 있다. 전기차와 내연기관차 사이에서 균형점을 찾고자 하는 소비자들에게는 흥미로운 대안일 수 있다.

다만, 이 차량의 장점이 중국 현지 기준이라는 점은 냉정히 고려할 필요가 있다. 현재 지리자동차는 자국 내수 시장을 중심으로 한 대규모 보조금 정책과 공격적인 가격 할인 전략을 병행하고 있어, 해외 진출 시 동일한 가격 경쟁력을 유지할 수 있을지는 미지수다. 한국 시장에 도입된다 해도 물류비, 인증비, 각종 세금과 서비스망 구축 비용 등을 감안하면, 소비자 체감 가격은 훨씬 높아질 가능성이 크다.

연비 역시 공인된 CLTC 기준에 따른 수치로, 실제 도심 주행이나 고속도로 주행 환경에서는 그 차이가 작지 않을 수 있다. 특히 2100km라는 최대 주행 가능 거리도 가장 이상적인 조건에서의 수치라는 점에서, 일반 운전자가 실생활에서 이를 그대로 경험하기는 어려울 수 있다.

또한 서비스 인프라, 브랜드 신뢰도, 부품 수급 및 잔존가치 등의 요소도 국내 소비자에게는 중요한 판단 기준이다. 아직 한국에서 정식 출시된 바 없으며, A/S 체계나 품질 보증 정책도 확인되지 않았다. 이 같은 현실적 조건을 종합적으로 고려했을 때, A7 EM-i는 당장의 선택지라기보다는 향후 중국 브랜드가 국내 시장에 어떤 식으로 진입할 수 있을지를 가늠해볼 수 있는 사례로 보는 것이 적절할 수 있다.

author-img
래디언스리포트
content@viewus.co.kr

댓글0

300

댓글0

[AI 추천] 랭킹 뉴스

  • ‘낙상 사고’ 허영만, 중환자실 이송…한 달째
  • 람보르기니 무르시엘라고 LP 670-4 SV 수동 경매 단 5대 경매 등장
  • 유럽의 유명 축구 구단들을 쇼핑하듯 사고있는 한국인 억만장자 여성
  • "동창회 나가지 마세요.." 55살 넘어 동창회 가면 안 되는 이유 3가지
  • "뒤통수 맞지 않으려면.." 60대 이후로 가져야할 마음가짐 3가지
  • "현관문 위쪽 나사를 돌려 보세요" 20년차 도어 기사의 '진짜 꿀팁'

당신을 위한 인기글

  • 유럽의 유명 축구 구단들을 쇼핑하듯 사고있는 한국인 억만장자 여성
    유럽의 유명 축구 구단들을 쇼핑하듯 사고있는 한국인 억만장자 여성
  • 아나운서 이혜성 “7년간 부모와도 대화 단절 상태”
    아나운서 이혜성 “7년간 부모와도 대화 단절 상태”
  • 최근 들어서 공유와 한효주가 나이들어 보이는 진짜 이유
    최근 들어서 공유와 한효주가 나이들어 보이는 진짜 이유
  • 14살에 키 172cm, 48kg으로 연예인 엄마 따라잡은 딸의 놀라운 근황
    14살에 키 172cm, 48kg으로 연예인 엄마 따라잡은 딸의 놀라운 근황
  • 전국민이 제발 결혼하라 응원했떤…세기의 커플의 최후
    전국민이 제발 결혼하라 응원했떤…세기의 커플의 최후
  • 노소영, 최태원과 이혼확정 후 집 떠나며 올린 사진 한장…모두 오열
    노소영, 최태원과 이혼확정 후 집 떠나며 올린 사진 한장…모두 오열
  • ‘KTX 논란’ 박위, 더 큰 일 발생…변호사 “법적으로 처벌될 수 있는 상황”
    ‘KTX 논란’ 박위, 더 큰 일 발생…변호사 “법적으로 처벌될 수 있는 상황”
  • 이병철 회장이 경고한 ‘약속 미루는 사람’ 4가지 특징
    이병철 회장이 경고한 ‘약속 미루는 사람’ 4가지 특징
  • 구혜선, 이혼 6년만에 엄마된 근황 깜짝 발표…’축하 물결’
    구혜선, 이혼 6년만에 엄마된 근황 깜짝 발표…’축하 물결’
  • 직함도 월급도 아니었다, 반값 급여에도 다시 출근하는 이유
    직함도 월급도 아니었다, 반값 급여에도 다시 출근하는 이유

당신을 위한 인기글

  • 유럽의 유명 축구 구단들을 쇼핑하듯 사고있는 한국인 억만장자 여성
    유럽의 유명 축구 구단들을 쇼핑하듯 사고있는 한국인 억만장자 여성
  • 아나운서 이혜성 “7년간 부모와도 대화 단절 상태”
    아나운서 이혜성 “7년간 부모와도 대화 단절 상태”
  • 최근 들어서 공유와 한효주가 나이들어 보이는 진짜 이유
    최근 들어서 공유와 한효주가 나이들어 보이는 진짜 이유
  • 14살에 키 172cm, 48kg으로 연예인 엄마 따라잡은 딸의 놀라운 근황
    14살에 키 172cm, 48kg으로 연예인 엄마 따라잡은 딸의 놀라운 근황
  • 전국민이 제발 결혼하라 응원했떤…세기의 커플의 최후
    전국민이 제발 결혼하라 응원했떤…세기의 커플의 최후
  • 노소영, 최태원과 이혼확정 후 집 떠나며 올린 사진 한장…모두 오열
    노소영, 최태원과 이혼확정 후 집 떠나며 올린 사진 한장…모두 오열
  • ‘KTX 논란’ 박위, 더 큰 일 발생…변호사 “법적으로 처벌될 수 있는 상황”
    ‘KTX 논란’ 박위, 더 큰 일 발생…변호사 “법적으로 처벌될 수 있는 상황”
  • 이병철 회장이 경고한 ‘약속 미루는 사람’ 4가지 특징
    이병철 회장이 경고한 ‘약속 미루는 사람’ 4가지 특징
  • 구혜선, 이혼 6년만에 엄마된 근황 깜짝 발표…’축하 물결’
    구혜선, 이혼 6년만에 엄마된 근황 깜짝 발표…’축하 물결’
  • 직함도 월급도 아니었다, 반값 급여에도 다시 출근하는 이유
    직함도 월급도 아니었다, 반값 급여에도 다시 출근하는 이유

공유하기