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 검색에서 뷰어스 기사를 더 자주 볼 수 있습니다.

Designed by Freepik

Designed by Freepik

“적게 먹는 습관은 건강에 도움이 된다.” 건강에 관심을 가진 사람들이라면 흔히 들어봤음직한 이야기다. 그리고 자연스럽게 고개를 끄덕인다. 하지만 왜 그런지 이해하고 있는가? 당장 소식(少食)의 필요성을 인정하면서도, 막상 그것이 왜 좋은지에 대해 설명할 수 있는 경우는 드물다. 소식하면 좋은 점은 무엇인지, 구체적으로 어떻게 실천할 수 있는지를 알아본다.

소식의 정의와 기본 원리

의미 자체는 간단하다. 글자 그대로 ‘적게 먹는 것’이다. 하지만 구체적으로 어떻게 적게 먹어야 하는지를 질문을 던져보면 생각만큼 쉽게 답이 나오지 않는다. 먹는 것을 조절해야 한다는 다이어트의 기본 원리가 단순히 칼로리 제한에만 그치지 않는다는 건 너무 잘 알려진 이야기다.

소식은 신체의 대사 과정 및 에너지 균형에 영향을 미친다. 몸에서 필요로 하는 에너지와 영양소를 ‘충분히’ 공급하면서도, 과도한 수준이 되지 않도록 조절하는 것이 핵심이다. 어떤 면에서 보면 간헐적 단식과 유사하다. 에너지 공급을 줄여 잉여 에너지를 최소화하는 과정에서 자연스럽게 세포의 자가포식(Autophagy) 과정이 촉진되기 때문이다.

자가포식 과정이 활성화되면 세포들은 조직 내 손상된 요소를 분해하고 그중 쓸만한 것들을 재활용하면서 에너지를 최대한 효율적으로 사용하려 한다. 이 과정에서 손상되고 노화된 세포들이 줄어들고 건강한 세포 위주로 재구성이 이루어진다. 이로써 건강한 대사 기능이 유지될 수 있는 것이다.

소식하면 좋은 점, 장기적 기대효과

소식의 가장 큰 장점이라면 당연히 체중 감량이다. 총 칼로리 섭취량이 줄어들기 때문에 자가포식이 촉진되고, 그 과정에서 체내 축적된 지방의 연소를 유도할 수 있기 때문이다. 이렇게 되면 자연스럽게 세포의 인슐린 감수성이 개선돼, 혈당 조절도 원활해진다. 당뇨 위험군이 많아진 요즘 시대에는 주목할 만한 방법이다. 이를 바탕으로 심혈관 건강 개선에도 도움이 된다.

한편 소식하는 습관을 장기적으로 유지할 경우, 면역 체계 강화를 기대해볼 수 있다. 체내 조직과 기관의 세포 구성이 건강하게 바뀌면서, 필요한 영양소는 모두 공급되기 때문에 전반적으로 면역력이 좋아질 가능성이 높다. 잔병치레가 줄어드는 것은 물론, 잦은 염증에 시달리던 사람은 뚜렷한 개선 효과를 볼 수 있다.

여기서 중요한 포인트는 ‘필요한 영양소를 모두 공급’한다는 데 있다. 소식은 단순히 적게 먹는 것이 아니며, 구체적으로 계획된 식단 중에서 딱 필요한 만큼만 먹는 것을 의미한다. 똑같이 건강한 식단을 섭취하더라도 필요 이상으로 먹게 되면 그 역시도 체내에 잉여 에너지를 축적시키는 원인이 되기 때문이다.

특히 나이가 들어갈수록 소식 습관을 갖춰놓는 것은 큰 도움이 된다. 건강을 꾸준히 관리한다고 해도 노화가 진행되면 신진대사 속도가 감소하게 된다. 자연스럽게 소화 기능도 약해지기 때문에, 식사량을 줄이지 않으면 소화 불량이나 변비 등의 문제를 달고 살 우려가 생긴다. 무엇보다 근육량이 감소하기 때문에 전체적으로 필요한 에너지 총량도 줄어드는 것이 당연하다.

나이가 들면 전반적인 신진대사 속도가 감소하기 때문에, 식습관 변화를 고려할 필요가 있다 / Designed by Freepik
나이가 들면 전반적인 신진대사 속도가 감소하기 때문에, 식습관 변화를 고려할 필요가 있다 / Designed by Freepik

소식 실천 방법과 유의사항

앞서 소식의 핵심은 필요한 에너지와 영양소를 충분히, 그러나 과도하지 않게 공급하는 것이라고 했다. 그러려면 우선 자신에게 필요한 에너지와 영양소가 어느 정도인지를 아는 것이 중요하다. 수학적으로 정확한 값은 아니더라도 대략적인 수준을 알고 있어야만 원활한 소식이 가능해진다.

자신의 현재 상태를 토대로 기초 대사량을 산출하는 것이 먼저다. 이는 자가 측정법으로 대략적인 값을 얻어도 되지만, 건강검진 등을 통해 확인한 신체 지표를 토대로 하는 편이 가장 좋다. 이를 바탕으로 전체 칼로리, 영양소 비율 등을 정해서 목표를 설정하는 것이 중요하다. 

예를 들어 전체적인 식사량이 많은 경우라면 모든 메뉴를 3분의 2 정도로 줄여서 칼로리가 적당한 수준인지 가늠해볼 수 있다. 전체 식사량이 많지는 않지만 탄수화물과 지방 위주로 섭취하는 경우라면 특정 메뉴를 다른 것으로 바꿔서 섭취량 비율을 조절할 수 있다. 

이와 같은 방법으로 영양소의 균형을 유지하는 것이 중요하다. 하루동안 섭취하는 전체 칼로리를 기준으로 탄수화물:단백질:지방을 50:25:25 또는 40:30:30 정도로 맞추게 된다. 지방을 좀 더 줄이는 식으로 50:30:20 또는 45:30:25 비율로 조절할 수도 있다. 이때 무기질과 비타민, 섬유질, 수분도 골고루 섭취할 수 있도록 식단을 구성해야 한다.

다만, 기존 식사량에서 너무 크게 변화를 줘야 하는 상황이라면 섣불리 시작하지 말고 의사 또는 영양 전문가와 상담을 먼저 할 것을 권한다. 일반적으로 소식은 권장되는 방법이지만, 현재 건강 상태나 개인 체질 등에 따라 소식이 적합하지 않은 경우도 있기 때문이다. 

또한, 간단하게 설명했지만 실질적으로 고려할 사항이 많기 때문에, 정확한 맞춤형 계획을 세우기 위해서라도 전문가 상담을 받는 편이 좋다.

단순히 먹는 양을 줄이는 것만이 아니라, 필요한 영양소를 모두 섭취하도록 해야 한다 / 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년만에 엄마된 근황 깜짝 발표…’축하 물결’
  • 직함도 월급도 아니었다, 반값 급여에도 다시 출근하는 이유
    직함도 월급도 아니었다, 반값 급여에도 다시 출근하는 이유

공유하기