WPML
Статус
Решено автором
Решено в
MapPress 2.95.7
Связанный плагин/тема
MapPress Maps for WordPress
Теги темы
Compatibility

Обзор проблемы

При использовании MapPress с WPML Вы можете столкнуться с тем, что точки интереса (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»

Все известные проблемы →