- 상태
- 미해결
- 보고된 제품
- WPML Multilingual & Multicurrency for WooCommerce 5.3.2
- 주제 태그
- Bug, WCML
문제 개요
WPML Multilingual & Multicurrency for WooCommerce를 사용할 때, my-account 페이지를 shop 페이지의 하위 페이지로 설정하면 보조 언어에서 내 계정 엔드포인트(주문, 다운로드 등)에 접근할 때 404 오류가 발생할 수 있습니다. 이 문제는 일반적으로 상점 및 카테고리 기준 또는 상점 기준과 같은 고유주소 설정에서 발생합니다.
임시 해결 방법
진행하기 전에 사이트의 전체 백업을 완료하세요.
- 테마의 functions.php 파일을 여세요.
- 다음 코드를 추가하세요:
add_filter( 'init', function() { $my_account_page_id = wc_get_page_id( 'myaccount' ); $my_account_parent_id = get_post_parent( $my_account_page_id ); if ( $my_account_page_id && $my_account_parent_id ) { $default_language = apply_filters( 'wpml_default_language', '' ); $languages = apply_filters( 'wpml_active_languages', [] ); foreach ( $languages as $language ) { if ( $language['code'] !== $default_language ) { $translated_id = apply_filters( 'wpml_object_id', $my_account_page_id, 'page', true, $language['code'] ); if ( $translated_id ) { $translated_url = get_page_uri( $translated_id ); add_rewrite_rule( trailingslashit( $translated_url ) . '?$' , 'index.php?pagename=' . $translated_url, 'top' ); foreach ( WC()->query->query_vars as $endpoint ) { $translated_endpoint = apply_filters( 'wpml_get_endpoint_translation', $endpoint, $endpoint, $language['code'] ); add_rewrite_rule( trailingslashit( $translated_url ) . $translated_endpoint . '(/(.*))?/?$' , 'index.php?' . $endpoint . '=$matches[2]&pagename=' . $translated_url, 'top' ); } } } } } } );