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

뉴스에서 난리입니다. ”이것”에서 미세플라스틱이 대량 검출됐습니다.

fuji

fuji

목차

물, 이제는 안심하고 마실 수 없는 시대?

우리 일상 곳곳에 숨어있는 미세플라스틱

생수, 수돗물, 정수기… 어떤 물에서 더 많이 검출될까?

미세플라스틱이 우리 몸에 미치는 충격적인 영향

미세플라스틱 노출을 줄이는 현명한 생활법

건강한 식단과 운동, 그리고 물 선택법

오늘의 한 잔이 내일의 건강을 바꾼다

fuji
fuji

1. 물, 이제는 안심하고 마실 수 없는 시대?

최근 뉴스와 환경 포럼, 과학 저널에서는 “우리가 마시는 물에서 미세플라스틱이 대량 검출됐다”는 소식이 연일 화제가 되고 있습니다. 그동안 해산물, 소금, 채소, 과일 등 식품에서 미세플라스틱이 검출된다는 사실은 알려져 있었지만, 이제는 우리가 매일 마시는 생수, 수돗물, 정수기 물까지도 안전하지 않다는 연구 결과가 속속 등장하고 있습니다. 미세플라스틱이란 5mm 이하의 아주 작은 플라스틱 조각으로, 플라스틱 용기, 포장재, 의류, 생활용품 등에서 분해되어 물과 음식, 심지어 공기 중에도 퍼져 있습니다.

waterstand
waterstand

2. 우리 일상 곳곳에 숨어있는 미세플라스틱

미세플라스틱은 생수병, 페트병, 정수기 필터, 병뚜껑, 플라스틱 포장재 등 다양한 경로로 물에 유입됩니다. 실제로 생수 한 병에는 수천~수만 개의 미세플라스틱이 들어 있을 수 있고, 수돗물이나 정수기 물에서도 미세플라스틱이 검출되고 있습니다. 미세플라스틱은 1마이크로미터(㎛) 이하의 나노플라스틱까지 포함되어 있어, 필터로도 완벽하게 걸러지지 않을 수 있습니다. 생수병을 냉동하거나, 플라스틱 용기에 뜨거운 물을 담아두면 미세플라스틱과 유해 화학물질이 더 많이 용출될 수 있다는 연구 결과도 있습니다.

hikelifemylife
hikelifemylife

3. 생수, 수돗물, 정수기… 어떤 물에서 더 많이 검출될까?

최근 국내외 연구에 따르면, 플라스틱 생수병에 담긴 생수에서 미세플라스틱이 가장 많이 검출되고 있습니다. 생수병을 여닫는 과정, 제조·유통·보관 중에 미세한 플라스틱 조각이 물에 섞이기 때문입니다. 수돗물에도 미세플라스틱이 포함되어 있지만, 여과기를 거치거나 끓여 마시면 일부 줄일 수 있습니다. 정수기 역시 필터의 종류와 관리 상태에 따라 미세플라스틱 제거 효과가 다릅니다. 전문가들은 “생수 대신 여과된 수돗물을 마시면 미세플라스틱 섭취를 최대 90%까지 줄일 수 있다”고 조언합니다. 플라스틱 용기를 반복 사용하거나, 전자레인지에 가열하는 것도 미세플라스틱 방출량을 크게 늘릴 수 있으니 주의가 필요합니다.

natgeo
natgeo

4. 미세플라스틱이 우리 몸에 미치는 충격적인 영향

미세플라스틱은 체내에 들어오면 소화기, 혈관, 폐, 심장, 뇌, 신장 등 온몸을 돌아다니며 축적될 수 있습니다. 크기가 작은 나노플라스틱은 혈액뇌장벽까지 뚫고 들어가 뇌 조직에 쌓이고, 신경세포 손상, 염증 반응, 기억력 저하, 파킨슨병 등 신경계 질환을 유발할 수 있다는 연구 결과도 있습니다. 미세플라스틱 표면에는 환경호르몬(비스페놀A, 프탈레이트 등), 중금속(납, 카드뮴, 크롬 등), 발암물질(PFAS, 니트로사민 등)이 흡착되어 있어, 암, 심혈관질환, 내분비계 교란, 생식기능 저하, 면역력 저하, 성장 장애 등 다양한 건강 문제를 일으킬 수 있습니다. 실제로 심장, 폐, 간, 신장, 태반, 심지어 신생아의 태변에서도 미세플라스틱이 검출됐다는 보고가 있습니다.

yahoo
yahoo

5. 미세플라스틱 노출을 줄이는 현명한 생활법

미세플라스틱을 완전히 피하기는 어렵지만, 노출을 줄일 수 있는 방법은 분명 있습니다. 첫째, 플라스틱 생수병 대신 여과된 수돗물이나 유리병, 스테인리스 물병을 사용하세요. 둘째, 플라스틱 용기에 뜨거운 물이나 음식을 담지 말고, 전자레인지 가열도 피하세요. 셋째, 일회용 플라스틱 컵, 빨대, 포장재 사용을 줄이고, 장을 볼 때는 유리·금속·종이 포장 제품을 선택하세요. 넷째, 플라스틱 도마 대신 나무 도마, 코팅 프라이팬 대신 스테인리스·세라믹 프라이팬을 사용하세요. 다섯째, 의류·침구·타월 등은 합성섬유보다 면, 린넨 등 천연섬유 제품을 선택하고, 세탁 시 세탁망을 활용해 미세플라스틱 배출을 줄이세요. 여섯째, 집안 먼지와 구석구석을 자주 청소해 미세플라스틱 흡입을 최소화하세요.

dream
dream

6. 건강한 식단과 운동, 그리고 물 선택법

물뿐 아니라 음식에서도 미세플라스틱이 검출되고 있으니, 신선한 채소와 과일, 잡곡, 해조류, 두부, 생선, 견과류 등 자연식 위주의 식단을 유지하세요. 아침: 잡곡밥, 두부구이, 나물, 김치, 점심: 현미밥, 생선구이, 브로콜리, 오이무침, 저녁: 고구마, 플레인 요거트, 방울토마토, 간식: 바나나, 견과류, 삶은 계란 등 균형 잡힌 식단이 면역력과 해독력을 높입니다. 운동은 하루 30분 이상 걷기, 맨몸 근력운동, 식사 후 산책, 스트레칭을 꾸준히 실천하면 혈액순환과 노폐물 배출에 도움이 됩니다. 물은 여과기를 통해 정수하거나 끓여 마시고, 플라스틱 용기보다는 유리·스테인리스 용기를 사용하세요.

allabout
allabout

7. 오늘의 한 잔이 내일의 건강을 바꾼다

미세플라스틱, 이제는 물 한 잔에서도 안심할 수 없는 시대입니다. 하지만 작은 실천과 생활습관 변화로 노출을 크게 줄일 수 있습니다. 오늘부터 플라스틱 생수병 대신 정수된 물, 유리병, 스테인리스 물통을 사용해보세요. 집안 청소, 식단, 운동, 물 선택까지 꼼꼼히 챙기면 내 몸과 가족, 그리고 지구의 건강을 모두 지킬 수 있습니다. 매일 마시는 물 한 잔, 이제는 더 현명하게 선택하세요! 

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

공유하기