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

“한 입 먹으면 반박 불가!” 최고의 한국 맛집이 모여 있는 야무진 동네 4
주요 메뉴 바로가기 (상단) 본문 컨텐츠 바로가기 주요 메뉴 바로가기 (하단)

“한 입 먹으면 반박 불가!” 최고의 한국 맛집이 모여 있는 야무진 동네 4

인포매틱스뷰

구글 검색 선호 출처로 추가

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

[부산 고마회] 한국 맛집 동네 4 / 사진=비짓부산@써머트리, 이음미디어

[부산 고마회] 한국 맛집 동네 4 / 사진=비짓부산@써머트리, 이음미디어

우리나라는 동해와 서해, 그리고 남해가 어우러져 지역마다 독특한 식재료와 수백 년 이어온 조리법이 공존하는 미식의 천국입니다. 흔히 여행은 식후경이라고 하지만, 이제는 음식이 곧 여행의 목적이 되는 시대입니다.

그중에서도 맛이 훌륭한 한국 맛집들은 단순히 배를 채우는 곳을 넘어, 그 지역의 역사와 사람들의 기질이 담긴 고유한 음식 철학을 보여줍니다. 지금부터 지역의 맛으로 승부하는 국내 최고의 미식 도시 4곳을 소개합니다.

남도의 풍요로움부터 해양 도시의 역동성, 그리고 마지막으로 식재료에 대한 도끼질 집념을 보여주는 숨겨진 맛까지, 진정한 미식을 위한 여정을 떠나보세요.

부산

돼지국밥 / 사진=비짓부산@써머트리, 이음미디어
돼지국밥 / 사진=비짓부산@써머트리, 이음미디어

부산은 바다를 끼고 있는 지리적 이점 덕분에 신선하고 활력 넘치는 해산물 요리가 발달한, 대한민국 최대의 해양 미식 도시입니다. 동해와 남해가 만나는 길목에 위치하여 사계절 풍성한 해산물을 자랑하죠. 부산 상징은 단연코 활어회입니다.

자갈치 시장이나 민락어민활어직판장에서는 싱싱한 활어를 즉석에서 구매하고 맛볼 수 있으며, 저녁에는 광안대교의 아름다운 야경을 배경으로 회 포장을 즐기는 문화도 유명합니다. 이 외에도 부산을 대표하는 음식으로는 밀면과 돼지국밥을 꼽을 수 있습니다. 밀면은 한국전쟁 당시 피란민들의 애환이 담긴 음식으로, 저렴하면서도 잡내 없고 깊은 육수 맛이 따라올 지역이 없습니다.

또 돼지국밥은 뽀얀 국물에 두툼한 돼지고기를 넣어 끓인 소울푸드로, 특히 부산역 주변에 유명 국밥 골목이 형성되어 있습니다. 어묵, 씨앗호떡 등 부산만의 특색 있는 길거리 음식은 역동적인 항구 도시의 에너지를 그대로 맛볼 수 있습니다.

대구

납작만두 / 사진=한국관광공사 포토코리아@김지호
납작만두 / 사진=한국관광공사 포토코리아@김지호

대구는 내륙 도시의 특성상 산과 평야에서 나는 식재료를 바탕으로 독특한 맛을 발전시켜 왔습니다. 특히 매콤하고 푸짐한 육류 요리와 국수 문화가 발달한 곳이라고 할 수 있죠. 대구를 대표하는 음식은 일명 대구 10미로 불리는데, 그중에서도 따로국밥과 뭉티기(생고기)가 유명한데요.

따로국밥은 밥과 국이 따로 나오는 형태로, 푹 우려낸 얼큰한 육수에 선지와 소고기를 넣어 끓여내 속풀이 해장국으로 인기가 높습니다. 뭉티기는 대구의 육류 미식을 상징하는 메뉴로, 당일 도축한 신선한 우둔살을 뭉텅뭉텅 썰어 참기름장이나 특제 양념장에 찍어 먹는 향토 음식입니다.

뛰어난 신선도가 필수적이기 때문에 대구 현지에서만 맛볼 수 있는 특별한 메뉴입니다. 또한 납작만두나 막창구이도 대구의 젊은 세대는 물론 전 세대를 아우르는 맛을 선보입니다. 대구는 근대 골목길 투어와 함께 다양한 미식 골목을 탐방하며 역사와 맛을 동시에 즐기기에 좋은 도시입니다.

강릉

초당 순두부 / 사진=한국관광공사 포토코리아@이범수
초당 순두부 / 사진=한국관광공사 포토코리아@이범수

강릉은 태백산맥이 동해와 만나는 곳에 위치하여, 청정한 해산물과 산나물을 동시에 아우르는 미식 문화를 형성했습니다. 특히 동해의 깊고 깨끗한 맛을 가장 잘 느낄 수 있는 도시입니다. 강릉의 핵심은 해산물과 순두부입니다.

주문진항이나 사천진항에서는 갓 잡은 싱싱한 오징어, 활어회를 맛볼 수 있습니다. 특히 도루묵이나 양미리와 같이 동해에서만 흔하게 나는 제철 해산물 요리가 대박입니다. 또 하나의 별미는 초당 순두부가 빠질 수 없는데요.

바닷물을 간수로 사용하여 콩의 고소함과 바다의 짭조름함이 절묘하게 조화된 초당 순두부는 맑은 백순두부, 순두부 젤라또, 그리고 얼큰한 순두부찌개 등 다양한 형태로 즐길 수 있어 강릉의 필수 코스로 자리 잡았습니다. 안목해변의 커피거리와 더불어, 강릉은 자연과 맛이 어우러진 힐링 미식 여행지로 완벽합니다.

파주

나무를 베는 도끼로 고기를 썰어버리는 파주(이해를 돕기 위한 이미지) / Designed by Freepik
나무를 베는 도끼로 고기를 썰어버리는 파주(이해를 돕기 위한 이미지) / Designed by Freepik

마지막으로 추천할 미식 도시는 경기 북부의 숨겨진 보물, 바로 파주입니다. 파주 음식은 뛰어난 품질의 지역 특산물과 셰프들의 장인 정신이 결합하여 독특한 미식 영역을 구축했습니다. 특히 최근 한식대첩 우승자 셰프인 임짱(본명:임성근)씨가 방송을 통해 파주 심학산의 무림 고수 같은 숨겨진 맛을 알리며 큰 화제를 모았습니다.

넷플릭스 인기 프로그램 흑백요리사2를 통해 큼지막한 갈비를 도끼로 썰며 투박하지만 힘이 넘치는 요리 철학을 보여주었는데요. 이는 누구도 범접할 수 없는 고수의 실력을 증명했습니다.

파주는 예로부터 장단콩과 개성 인삼의 명산지이며, 임진강에서 잡히는 신선한 민물고기와 고품질의 한우가 유명합니다. 이 외에도 파주의 맛집들은 화려한 기교 대신, 최고의 장단콩으로 만든 청국장이나 임진강 참게 매운탕처럼 재료 본연의 맛에 대한 투박하고 묵직한 집념을 보여줍니다.

Designed by Freepik
Designed by Freepik

부산, 대구, 강릉, 그리고 파주까지, 이 네 도시는 각기 다른 개성과 철학으로 무장한 한국 맛집의 성지입니다. 여행의 즐거움이 곧 미식의 즐거움이 되는 이 도시들을 방문하여, 그 지역의 역사와 풍토가 빚어낸 깊고 야무진 맛의 세계를 직접 경험해 보시기 바랍니다.

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

공유하기