- Stato
- Risolto dall’autore
- Risolto in
- MapPress 2.95.7
- Plugin/tema correlato
- MapPress Maps for WordPress
- Tag dell’argomento
- Compatibility
Panoramica del problema
Quando usi MapPress con WPML, potresti riscontrare che i Punti di Interesse (POI), come le città salvate su una mappa, non vengono tradotti. Questo accade perché le stringhe dei POI vengono memorizzate in base alla lingua usata durante la loro creazione e non sono automaticamente disponibili per la traduzione.
Soluzione alternativa
Assicurati di avere un backup completo del sito prima di procedere.
- Aggiungi il seguente codice al file functions.php del tuo tema.
// 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; } } } } } - Salva di nuovo le tue mappe in “MapPress > Maps”.
- Vai su “WPML > Traduzione stringhe” e traduci le stringhe nel dominio ‘mappress’