WPML
ステータス
開発者により解決済み
解決されたバージョン
MapPress 2.95.7
関連するプラグイン/テーマ
MapPress Maps for WordPress
トピックタグ
Compatibility

問題の概要

WPMLでMapPressを使用すると、マップに保存された都市などのPoints of Interest(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」ドメインの文字列を翻訳します。

すべての既知の問題 →