- 状态
- 已由作者解决
- 解决于
- 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”域下的字符串