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' );

우중 혼자드라이브 세종 포천 고속도로 휴게소 처인 휴게소
주요 메뉴 바로가기 (상단) 본문 컨텐츠 바로가기 주요 메뉴 바로가기 (하단)

우중 혼자드라이브 세종 포천 고속도로 휴게소 처인 휴게소

구글 검색 선호 출처로 추가

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

이 글에서는 특별한 여행 지도 소개되지 않으며 추천드릴만 한 내용이 포함된 건 아닙니다. 그냥 용인 처인 휴게소를 소개하는 내용입니다. 그동안 여행을 다니며 많은 고속도로 휴게소를 지나지만 실제 소개한 경우는 그리 많지 않습니다. 대부분 무언가 특별한 것을 보았거나 느꼈을 경우 또는 그날의 감정이 그냥 그러고 싶은 경우 정도라 할까요?

그런데 용인 처인 휴게소는 지나치며 봤을 때도 독특한 인상이었는데 막상 들어가서 둘러보니 무언가 특별함이 있다는 생각이 들어 소개하게 되었습니다. 보시기에 뭐 특별한 점을 발견하지 못하실 수도 있겠지만…

처인휴게소

경기도 용인시 처인구 곡현로619번길 36

일반적인 휴게소라 하기에는 건물도 위치도 모두 특별하기만 했던 용인 처인 휴게소.

우중 혼자드라이브를 즐기다 들어선 곳.

원해서 시작하게 된 혼자드라이브는 아니지만 그렇게라도 위로해야 마음이 편한 듯하다. 쯥!

주차 후 안으로 들어가니 가장 먼저 톰앤톰스커피와 에스컬레이터가 눈에 들어온다.

별생각 없이 곧바로 2층으로 고고.

이곳 2층은 식당과 카페가 모여 있는 곳이라 생각하면 맞을 듯하다.

그리고 창밖을 바라보며 앉을 수 있는 1인 테이블과 의자 4인 테이블과 의자 등이 일반적이지 않은 특별함.

고속도로 위를 씽씽 달리는 차량을 내려다보며 커피 한 잔. 딱 혼자드라이브를 즐기다 들어선 사람들을 위한 자리.

어느 고속도로 휴게소를 가든 만나게 되는 식당과 카페인데 이곳은 규모가 큼에도 불구하고 아늑한 느낌이 든다.

그것은 아마도 천정이 지닌 곡선 때문이지 않을까 생각을 해보는데 정확한 원인은 모르겠다.

독특하게도 김밥만을 판매하는 곳이 있다.

지나치며 봤기에 대면 판매인지 키오스크를 이용한 비대면 판매인지는 정확히 모르겠지만 자신이 알아서 전자레인지에 데워 먹는 것으로 확인된다. 나중에 다시 들르면 커피 대신 김밥을 먹어볼까나?

그리고 재미난 작명 / 면날며칠.

이런 작명을 보면 괜히 즐겁고 정감이 느껴진다.

2층으로 연결된 외부 출입구로 나와봤다.

이렇게 싸돌아다니는 것도 혼자드라이브였기에 가능했을까? 아마도 타인과 함께하는 시간들이었다면 혼자 이리 돌아다닐 생각 자체를 안 했을 거라 짐작된다.

솔직히 비가 어마무시하게 쏟아지길래 귀찮아서 나오지 않으려 했는데 소개해 볼까 마음먹은 상태이기에 어쩔 수 없이 나와 빗속을 걷는다.

조형물을 살펴보건대 야경을 위해 조형물이기도 한 듯. 그렇게 느끼고 보니 주간이 아닌 야간에 다시 와봐야겠단 생각이 또 든다. 쓸데없는 호기심 작동.

고속도로 휴게소의 많은 경우가 넓은 주차장과 이용 편의 시설에 국한되어 있는데 이곳 용인 처인 휴게소는 마치 전시관처럼, 조각 공원처럼, 무언가 다르게 꾸며놓았으며 공간도 여타의 고속도로 휴게소에 비해 넓으면 넓었지 작지 않다는 느낌이다.

다만 저 끝 주차장에 주차를 하고 나면 걸어오는데 꽤 많은 시간이 걸릴 듯하다.

그렇게 혼자드라이브를 즐기듯 외부 조형물과 전시물품을 휘휘 둘러보고 다시 실내로 들어서는 중.

이때 발견한 사랑의 자물쇠.

오호 이것 보소!

야간에 이곳을 지나면 이렇게 반지 2개를 겹쳐 놓은 듯한 조명이 독특하게 보이는가 보다.

Promise Ring ; 고객의 사랑과 믿음에 보답하는 약속의 증표라고 적혀 있다. 이런 말이야 감각 있는 사람이 적당히 정해 놓고 표기하는 내용인지라 큰 의미는 없을 듯하고 건물 자체의 특별함이 더 돋보인다.

요건 사랑의 자물쇠 자판기.

자물쇠가 얼마인지 모르겠지만 그리 많은 비용은 아닐 거라 생각되니 추억을 하나 만든다는 기분으로 자물쇠 하나 걸어보는 것도 괜찮을 듯하다.

다시 실내로 들어와 링 전체를 걸어 다니고 있다.

이곳은 한 지점에서 출발해 계속해서 앞으로 걸어가면 다시 원점으로 되돌아오는 원형 구조다.

이곳은 포토존.

바오 패밀리라 적혀 있는 곳.

그 바로 앞에서 기념사진 한 컷 남겨보는 것도 좋겠다.

용인의 대표 여행지 중 하나인 에버랜드.

그곳에서 판매하는 여러 굿즈가 여기 부스에 모두 모여있다. 그중에서도 사람들의 주목을 끄는 건 푸오바오 인형.

그렇게 조금 더 걷자 놀라운 것 발견.

비용 발생이 되는 건지 모르겠지만 쿠니가 보기에는 무료로 이용할 수 있는 인바디 체크 기기들.

놀랍기도 하고 갸우뚱하기도 하며 계속 전진.

이곳은 서점이나 도서관 같은 분위기. 고속도로 휴게소에서 이런 장소 있는 곳이 또 있으려나 모를 일.

여긴 조용한 카페와 같은 느낌. 시간이 넉넉한 분들이라면 노트북 펴 놓고 이곳에서 잠시 업무를 봐도 좋을 듯하다.

어랏! 이 놀라운 시설은 무어지?

미팅 룸이 마련되어 있는 고속도로 휴게소를 쿠니는 아직 한 번도 본 적이 없고 이곳에서 처음 본다.

내용을 살펴보니 이곳 회의실은 무료제공되는 곳이지만 모두 예약제로 운영되므로 현장에서 신청하면 안 된다.

만일, 이곳을 이용하고 싶다면 이곳 휴게소 편의점이나 관리 사무실로 연락하면 된다.

관리 사무실 전화번호 : 031-323-5325

무언가 특별할 것이라는 기대감을 갖고 방문하긴 했지만 그 예상을 뛰어넘는 놀람과 즐거움이 있었다.

1층에서는 아이들이 좋아할 만한 디지털 놀이 기구와 알록달록한 옷가지가 눈길을 사로잡고 있다.

스테인리스 강판에 구슬로 이뤄진 발판은 밟을 때 구슬이 속으로 내려가며 틈이 만들어지고 그곳으로 발에 묻는 흙이나 먼지를 빨아들인다. 실내 공기 청결을 위해서는 전국의 고속도로 휴게소에 모두 보급되어야 할 아이템이다.

궁금하긴 하지만 아직 한 번도 로봇 커피에서 커피를 주문해 본 적이 없다. 이유는 사람이 근무하는 카페와 가격이 동일하거나 약간 저렴한 편이기에 큰 관심을 불러일으키지 못한다.

전시되어 있는 드론 택시 모형.

언제일지 알 수는 없지만 쿠니 살아생전에 드론 택시를 타고 다닐 것이란 확고함은 있다.

저 앞에 보이는 레전드 히어로즈는 스크린 스포츠 테마파크로 놀이문화의 새로운 패러다임을 제시하고 있다.

축구, 피칭, 농구, 볼링, 캔디슬래쉬 액션 레이싱 등을 모두 스크린으로 경험할 수 있음이 신기하다.

우중 혼자드라이브를 즐기다 들른 고속도로 휴게소.

휴게소를 들러보시라 권하는 게 좀 어울리지 않는 듯하지만 차량을 운전하는 분이라면 특히 서울 경기에 사는 분이라면 혼자드라이브를 하든 가족과 함께 나들이를 하든 한 번쯤은 들러보시라 권하고 싶다.

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년만에 엄마된 근황 깜짝 발표…’축하 물결’
  • 직함도 월급도 아니었다, 반값 급여에도 다시 출근하는 이유
    직함도 월급도 아니었다, 반값 급여에도 다시 출근하는 이유

공유하기