- 상태
- 개발자 대기 중
- 관련 플러그인/테마
- Dokan
- 주제 태그
- Compatibility
문제 개요
WPML이 언어당 개별 도메인 모드로 설정된 상태에서 Dokan을 사용할 때, 언어 전환기가 추가 도메인 접두사가 포함된 잘못된 URL을 생성할 수 있습니다. 예를 들어 프랑스어로 전환하면 올바른 “https://domain.fr” 대신 “https://domain.com/fr/https://domain.fr/”와 같은 URL이 생성될 수 있습니다.
임시 해결 방법
진행하기 전에 전체 사이트 백업을 반드시 수행하세요.
- …/wp-content/plugins/dokan-wpml/dokan-wpml.php 파일을 여세요.
- 1871번째 줄을 찾으세요.
- 다음을:
public function filter_language_switcher_url( $url, $lang ) { $lang_code = $lang['code'] ?? ''; if ( empty( $url ) || empty( $lang_code ) ) { return $url; } // Get home URL without WPML modifications. $this->disable_url_translation(); $home_url = home_url(); $this->enable_url_translation(); $default_language_code = wpml_get_default_language(); $language_negotiation_type = (int) apply_filters( 'wpml_setting', 1, 'language_negotiation_type' ); $is_parameter_based = ( WPML_LANGUAGE_NEGOTIATION_TYPE_PARAMETER === $language_negotiation_type ); if ( ! $is_parameter_based && $default_language_code !== $lang_code ) { $base_url = trailingslashit( $home_url ) . $lang_code; } else { $base_url = $home_url; }
- 다음으로 교체하세요:
public function filter_language_switcher_url( $url, $lang ) { $lang_code = $lang['code'] ?? ''; if ( empty( $url ) || empty( $lang_code ) ) { return $url; } $language_negotiation_type = (int) apply_filters( 'wpml_setting', 1, 'language_negotiation_type' ); if ( WPML_LANGUAGE_NEGOTIATION_TYPE_DOMAIN === $language_negotiation_type ) { return $url; } $this->disable_url_translation(); $home_url = home_url(); $this->enable_url_translation(); $default_language_code = wpml_get_default_language(); $is_parameter_based = ( WPML_LANGUAGE_NEGOTIATION_TYPE_PARAMETER === $language_negotiation_type ); if ( ! $is_parameter_based && $default_language_code !== $lang_code ) { $base_url = trailingslashit( $home_url ) . $lang_code; } else { $base_url = $home_url; }
- 파일을 저장하고 사이트 캐시를 지우세요