- Statut
- Résolu par l’auteur
- Résolu dans
- MapPress 2.95.7
- Extension/thème associé
- MapPress Maps for WordPress
- Étiquettes de sujet
- Compatibility
Aperçu de l’anomalie
Lorsque vous utilisez MapPress avec WPML, il se peut que les points d’intérêt (POI), tels que les villes enregistrées sur une carte, ne soient pas traduits. Cela s’explique par le fait que les chaînes de texte des POI sont stockées selon la langue utilisée lors de leur création et ne sont pas automatiquement disponibles pour la traduction.
Solution de contournement
Assurez-vous d’avoir une sauvegarde complète de votre site avant de continuer.
- Ajoutez le code suivant au fichier functions.php de votre thème.
// 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; } } } } } - Enregistrez à nouveau vos cartes dans « MapPress > Maps ».
- Allez dans « WPML > Traduction de chaînes » et traduisez les chaînes du domaine ‘mappress’