如何从ACF Extended谷歌地图字段的邮件表单数据中单独获取经纬度值
解决方案
方案1:使用ACF Extended动态表单钩子注册自定义占位符
ACF Extended原生占位符暂不支持直接读取Google Maps字段返回数组的指定键值,你可以通过邮件预处理钩子注册专属的经纬度占位符。将以下代码添加到主题functions.php文件或自定义功能插件中即可:
// 注册地图经纬度自定义邮件占位符 add_filter('acfe/form/prepare_email', 'custom_acf_map_lat_lng_placeholders', 10, 4); function custom_acf_map_lat_lng_placeholders($email, $form, $args, $post_id){ // 替换为你实际的Google Maps字段名 $map_field_name = 'defibrylator_lokalizacja_mapa'; $map_value = get_field($map_field_name, $form['post_id']); if(!empty($map_value) && is_array($map_value)){ // 替换占位符为对应数值 $email['content'] = str_replace('{map:lat}', $map_value['lat'], $email['content']); $email['content'] = str_replace('{map:lng}', $map_value['lng'], $email['content']); } return $email; }
配置完成后,直接在邮件模板中使用{map:lat}调用纬度、{map:lng}调用经度即可。
方案2:使用自定义短代码调取
如果需要更灵活的字段值调用能力,也可以注册通用短代码实现:
// 自定义短代码提取地图字段指定键值 add_shortcode('get_map_value', 'custom_get_map_value'); function custom_get_map_value($atts){ $atts = shortcode_atts([ 'field' => '', 'key' => '', ], $atts); if(empty($atts['field']) || empty($atts['key'])) return ''; $map_val = get_field($atts['field']); return isset($map_val[$atts['key']]) ? $map_val[$atts['key']] : ''; }
在邮件模板中使用[get_map_value field="defibrylator_lokalizacja_mapa" key="lat"]取纬度,[get_map_value field="defibrylator_lokalizacja_mapa" key="lng"]取经度即可。
内容的提问来源于stack exchange,提问作者user2869150
相关产品推荐
相关产品推荐

