WPML
상태
개발자가 해결함
해결된 버전
MapPress 2.95.7
관련 플러그인/테마
MapPress Maps for WordPress
주제 태그
Compatibility

문제 개요

WPML과 함께 MapPress를 사용할 때, 지도에 저장된 도시와 같은 관심 지점(POI)이 번역되지 않는 문제가 발생할 수 있습니다. 이는 POI 문자열이 생성 시 사용된 언어를 기준으로 저장되며, 자동으로 번역 대상에 포함되지 않기 때문입니다.

임시 해결 방법

진행하기 전에 사이트의 전체 사이트 백업을 완료했는지 확인하세요.


  • 다음 코드를 테마의 functions.php 파일에 추가하세요.
    // WPML Workaround for compsupp-4265: Translate Mappress POI fields
    if ( class_exists('Sitepress') ) { 
    
    	add_action('mappress_map_save', 'my_mappress_register_poi_strings');
    	function my_mappress_register_poi_strings($map) {
    
    		$fields = array('address','title','name','body');
    		if (empty($map->mapid) || empty($map->pois) || !is_array($map->pois))
    			return;
    
    		foreach ($map->pois as $i => $poi) {
    			foreach ($fields as $field) {
    				if (isset($poi->$field) && $poi->$field !== '') {
    					$key = "map_{$map->mapid}_poi_{$i}_{$field}";
    					do_action( 'wpml_register_single_string','mappress', $key, $poi->$field );
    				}
    			}
    		}
    	}
    
    	add_action('mappress_map_display', 'my_mappress_translate_poi_fields');
    	function my_mappress_translate_poi_fields($map) {
    
    		$fields = array('address','title','name','body');
    		if (empty($map->mapid) || empty($map->pois) || !is_array($map->pois))
    			return;
    
    		foreach ($map->pois as $i => $poi) {
    			foreach ($fields as $field) {
    				if (isset($poi->$field) && $poi->$field !== '') {
    					$key = "map_{$map->mapid}_poi_{$i}_{$field}";
    					$translated = apply_filters('wpml_translate_single_string', $poi->$field, 'mappress', $key);
    					$poi->$field = $translated;
    				}
    			}
    		}
    	}
    	
    }
            


  • “MapPress > Maps”에서 지도를 다시 저장하세요.

  • “WPML > 문자열 번역”으로 이동하여 ‘mappress’ 도메인의 문자열을 번역하세요.

알려진 모든 문제 →