WPML
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’

Toutes les anomalies connues →