- 상태
- 해결됨
- 보고된 제품
- WPML Multilingual CMS 4.6.8
- 해결된 버전
- WPML 4.6.9
- 주제 태그
- Bug
문제 개요
하위 폴더에 WordPress를 설치하고 WPML 기능인 기본 언어에 디렉토리 사용을 사용하는 사용자에게 택소노미 보관함 및 사용자 정의 글 유형 링크의 URL이 잘못 생성되는 문제가 발생하고 있습니다. 이로 인해 URL 경로가 중복되며, 결과적으로 해당 페이지에 접속할 때 404 오류가 발생합니다.
예를 들어 http://www.domain.com/subfolder/en/category/new-category/ 대신 http://www.domain.com/subfolder/en/subfolder/en/category/new-category/ 경로로 리디렉션됩니다.
임시 해결 방법
진행하기 전에 사이트의 전체 백업을 완료했는지 확인하세요.
- …/wp-content/plugins/sitepress-multilingual-cms/classes/canonicals/class-wpml-canonicals-hooks.php 파일을 여세요.
- 87번째 줄을 찾으세요.
- 변경 전:
public function redirectArchivePageToDefaultLangDir() { global $wp_query; $isValidForRedirect = $wp_query->is_archive() && ! call_user_func( $this->is_current_request_root_callback ); if ( ! $isValidForRedirect ) { return; } $currentUri = $_SERVER['REQUEST_URI']; $lang = $this->sitepress->get_current_language(); if ( 0 !== strpos( $currentUri, '/' . $lang ) ) { $canonicalUri = user_trailingslashit( $this->url_converter->get_abs_home() . '/' . $lang . $currentUri ); $this->redirectTo( $canonicalUri ); } } private function redirectTo( $uri ) { $this->sitepress->get_wp_api()->wp_safe_redirect( $uri, 301 ); } - 변경 후:
public function redirectArchivePageToDefaultLangDir() { global $wp_query; $isValidForRedirect = $wp_query->is_archive() && ! call_user_func( $this->is_current_request_root_callback ); if ( ! $isValidForRedirect ) { return; } $currentUri = $_SERVER['REQUEST_URI']; $lang = $this->sitepress->get_current_language(); if ( 0 !== strpos( $currentUri, '/' . $lang ) ) { $realhome = get_option('siteurl'); $parsed = parse_url($realhome); if (false !== strpos($currentUri, $parsed["path"])){ return; } else { $canonicalUri = user_trailingslashit( $this->url_converter->get_abs_home() . '/' . $lang . $currentUri ); } $this->redirectTo( $canonicalUri ); } }