me

워드프레스에서 브라우저 언어가 ko일 경우 기존 홈페이지 주소/ko/ 로 리다이렉션 시키는 코드 + 속도 개선

script

<script type="text/javascript">
	document.addEventListener('DOMContentLoaded', function() {
		// 언어 변경 링크에 클릭 이벤트 리스너 추가
		var koLink = document.querySelector('a[title="한국어"]');
		var enLink = document.querySelector('a[title="English"]');

		if (koLink) {
			koLink.addEventListener('click', function() {
				document.cookie = "user_selected_language=ko; path=/";
			});
		}

		if (enLink) {
			enLink.addEventListener('click', function() {
				document.cookie = "user_selected_language=en; path=/";
			});
		}

		// 쿠키 확인
		var cookies = document.cookie.split(';').reduce(function(cookies, cookie) {
			var parts = cookie.split('=');
			cookies[parts[0].trim()] = parts[1].trim();
			return cookies;
		}, {});
	});
</script>

function php

add_action('template_redirect', 'redirect_based_on_browser_language');

function redirect_based_on_browser_language() {
    if (!is_admin() && !is_user_logged_in()) {
        // 캐시 무효화를 위해 헤더 추가
        header("Cache-Control: no-cache, no-store, must-revalidate");
        header("Pragma: no-cache");
        header("Expires: 0");

        // PHP에서 쿠키 확인
        $user_selected_language = isset($_COOKIE['user_selected_language']) ? 
        $_COOKIE['user_selected_language'] : '';

        // 현재 URL이 hansem.com 루트인지 확인
        if ($_SERVER['HTTP_HOST'] === '홈페이지주소' && $_SERVER['REQUEST_URI'] === '/' && 
            empty($user_selected_language)) {
            $lang = substr(strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']), 0, 2);
            if ($lang === 'ko') {
                wp_redirect('홈페이지주소/ko/');
                exit;
            }
        }
    }
}