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

지금 사용하는 스마트폰 화면에 ‘블루라이트 차단’ 혹은 ‘편안하게 보기’ 기능이 활성화돼 있는가? 혹은 컴퓨터 모니터에 블루라이트 차단 필름이 부착돼 있거나, 필터 프로그램이 설치돼 있는가? 만약 “No”라고 답한다면, 당신의 눈에 쌓여가는 피로를 우려해야 하는 상황일 수 있다. 

이는 단순히 눈이 피곤한 정도로 끝나지 않는다. 장기적으로 시력이 저하되고, 잦은 두통이 찾아올 수 있으며, 뭔가에 집중하거나 복잡한 생각을 할 때 뜻대로 되지 않는 결과로 이어질 수 있다. 이 모든 비극을 예방하기 위한 눈 피로 해소 방법을 알아보도록 한다.

눈 피로의 주된 원인, 청색광

시각은 인간의 감각기관 중 압도적으로 높은 비중을 차지한다. 오감을 통해 받아들이는 감각 정보 중 보통 70~80%가 눈에 의해 수집되고 처리되는 것으로 알려져 있다. 즉, 단순히 눈을 뜨고 세상을 바라보며 하루를 보내는 것만으로도 눈에는 피로가 쌓일 수밖에 없다.

여기에 현대사회에는 ‘디지털 기기의 화면’이라는 강적이 존재한다. 디지털 기기의 화면은 선명한 색상을 보여주기 위해 여러 종류의 가시광선을 사용한다. 보통 빛의 3원색이라 불리는 RGB, 즉 적색, 녹색, 청색 빛이 사용되는데, 이중 문제로 지목되는 것은 ‘청색광’이다. 이유는 가장 파장이 짧고 에너지량이 크기 때문이다.

디지털 기기는 보통 눈에서 가까이 두고 보게 된다. TV나 컴퓨터 모니터를 볼 때도 일정 거리 이상을 두고 볼 것을 강조했지만, 현대에 보편화된 스마트폰이나 태블릿은 그보다 훨씬 가까운 거리에서 오랜 시간을 들여다보게 된다.

게다가 화면 속에서 보여지는 것들에 집중하다보면, 자신도 모르는 사이 눈 깜빡임 횟수가 줄어들게 된다. 이는 눈을 건조하게 만들며, 같은 조건에서도 더 많은 피로가 쌓이게 하는 원인이 된다. 특히 불이 꺼진 어두운 공간에서는 화면에서 나오는 빛이 어두운 공간과 대비돼, 눈에 더 큰 부담을 끼치게 된다. 잠자리에서 스마트폰 보는 습관을 경계하는 이유다.

눈 피로로 인한 증상들

눈으로 무언가를 응시한다는 것은 눈 근육이 긴장 상태를 유지한다는 의미다. 당연히 눈을 뜨고 있는 시간이 길수록 눈 근육의 긴장 정도는 커진다. 한편, 눈을 깜빡이는 것은 눈꺼풀의 점막으로 눈을 덮어주면서 눈 근육을 쉬게 함과 동시에 눈에 수분을 공급하는 역할도 겸한다. 하지만 무언가에 집중하게 되면 깜빡임 횟수가 줄어들어 눈이 건조해지는 원인이 된다.

이런 문제들이 누적되면 눈이 건조하고 뻑뻑해지면서 통증이 느껴지게 된다. 수분이 부족해지므로 주변의 이물질 등에 의한 자극이 더 크게 느껴지고, 눈의 간지러움과 같은 증상으로 이어진다. ‘눈에 힘을 준다’라는 개념을 이해한다면, 눈 근육의 중요성도 알게 된다. 즉, 눈 근육이 심하게 지치면 눈에 초점을 맞추기가 힘들어진다. 이로 인해 특정 물체를 보고자 할 때 흐릿하게 보일 수 있고, 피로도가 심해지면 시야 전체가 흐릿해질 수 있다. 또, 눈이 무겁고 자꾸 감기려 하는 증상이 나타나 더 자주 깜빡이게 될 수도 있다.

가장 심각한 증상은 신경계에 관련된 영향이다. 눈은 시각 정보를 처리하기 위해 수많은 신경다발과 연결돼 있다. 따라서 눈에 뭔가 이상이 생기면 신경계에도 그 영향이 전해진다. 눈이 피곤할 때 사람은 눈과 이마 사이에 아릿한 통증을 느끼며 눈가를 주무르게 된다. 이것이 대표적인 현상이다.

피로가 해소되지 않고 계속 누적되면, 신경계의 영향이 과도하게 축적되면서 뇌 기능에도 영향을 미친다. 피곤할 때 뭔가에 집중하려 해도 뜻대로 되지 않는 경험을 해본 적이 있다면, 그것이 눈 피로 때문일 수도 있다는 것이다.

눈 피로 해소 방법, 습관 만들기

아침에 눈을 뜨면 어쨌거나 하루종일 눈을 사용해야 한다. 하지만 그렇다고 해서 눈 피로 해소 방법이 전혀 없는 것은 아니다. 가장 기본적으로, 틈틈이 짬을 내서 눈을 감고 휴식을 취하는 것만으로도 눈에 가해지는 피로를 한층 덜어줄 수 있다. 

눈을 감고 쉴 때는 그냥 가만히 있는 것도 좋지만, 간단한 눈 운동을 해주는 것도 좋다. 눈을 감은 상태에서 상하좌우로 10회 정도씩 눈을 굴려주는 것이다. 이는 눈 근육을 이완시키고 긴장을 완화하는 운동법으로, 한층 효과적인 눈 피로 해소 방법이 된다.

컴퓨터를 비롯해 디지털 기기 화면을 자주 봐야 하는 사람이라면, 20-20-20 규칙을 기억해두면 도움이 된다. 스마트폰 등을 이용해 20분 타이머를 설정해두고, 그 시간마다 약 20피트(6미터 가량) 떨어진 물체를 20초간 바라보라는 규칙이다. 가까운 곳을 볼 때는 눈의 조절근이 긴장 상태가 되고, 먼 곳을 바라볼 때 눈의 조절근이 이완된다. 즉, 먼 곳을 보는 행위를 통해 눈 근육에 휴식 시간을 주는 방법이다.

공간과 화면의 밝기를 비슷하게 맞추는 것도 도움이 된다. 실내 밝기와 화면 밝기가 다를 경우 이 또한 눈의 피로를 증가시킬 수 있는 요인이 되기 때문이다. 실내 밝기와 화면 밝기는 사용하는 단위가 다르기 때문에, 정확하게 맞추는 것은 쉽지 않다. 보통 공간 밝기는 고정돼 있는 경우가 많으므로, 사용 중인 모니터 밝기를 조정하면서 너무 튀지 않는 수준으로 맞춰주면 된다. 

집에서 개인용 컴퓨터를 사용할 때는 주변 밝기에 따라 자동으로 밝기를 조절해주는 기능이 탑재된 모니터를 사용하면 도움이 된다. 모니터가 얼굴로부터 최소 50cm 이상 떨어진 거리에 위치하도록 두는 것도 참고할 만한 팁이다.

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

공유하기