如何解决Google Maps Javascript与Wordpress admin Javascript的冲突

如何解决Google Maps Javascript与Wordpress admin Javascript的冲突,javascript,wordpress,google-maps,Javascript,Wordpress,Google Maps,我有一个目前正在部署的webshop,它基于Wordpress。我添加了一个功能,如果管理员输入地址,地图将显示。到目前为止,一切都很好 但是,我注意到,每当我添加以下内容时: wp_enqueue_script('googlemap', 'http://maps.google.com/maps/api/js?sensor=false', array(), false, true); 这显然是谷歌地图js,Wordpress管理员的拖放功能(最明显的是小部件区域)不起作用。我试着评论这句话,瞧

我有一个目前正在部署的webshop,它基于Wordpress。我添加了一个功能,如果管理员输入地址,地图将显示。到目前为止,一切都很好

但是,我注意到,每当我添加以下内容时:

wp_enqueue_script('googlemap', 'http://maps.google.com/maps/api/js?sensor=false', array(), false, true);
这显然是谷歌地图js,Wordpress管理员的拖放功能(最明显的是小部件区域)不起作用。我试着评论这句话,瞧,小部件的拖放又回来了,但当然没有谷歌地图

你也遇到过这种情况吗?你是怎么做到的?目前,我正在通过非javascript版本的小部件操作我的管理页面。可行,但不理想。

尝试:

if (!is_admin()) {
wp_enqueue_script('googlemap', 'http://maps.google.com/maps/api/js?sensor=false', array(), false, true);
}

编辑:请评论,如果这是正在使用的管理面板,我会找到一个解决办法;上面的代码只在前端对googlemap脚本进行排队。

这可能会对您有所帮助,因为它刚刚解决了我的问题

我加载了与您相同的谷歌地图,但在我自己的js文件中,我有:

if($('#gmap').length != 0){
    initialize();
}

这样,它就不会加载到没有#gmap元素的页面上

您可以极其精确地控制必须加载脚本的管理面板页面。首先要考虑的是:如果没有找到DOM元素,MAP API会生成错误“A是未定义的”。因此,您必须在管理面板的右侧页面加载API

我使用以下脚本在特定的自定义post类型编辑屏幕中加载GMaps API:

add_action('admin_enqueue_scripts', 'my_admin_enqueue_scripts' );
function my_admin_enqueue_scripts( $hook ) {
  if( ('my_custom_post_type' != get_post_type()) || ('edit.php' == $hook) )
    return;
  // enqueue GMaps API
  wp_enqueue_script('google-maps-api', 'http://maps.googleapis.com/maps/api/js?sensor=false' );
}
  • 仅当WP加载管理面板的脚本时,操作钩子admin_enqueue_脚本才会触发
  • 参数$hook标识当前文件
  • 我的自定义帖子类型是。。。需要google地图的自定义帖子类型。当然,它也可以是“post”或“page”。因此,上面的代码不允许在页面和POST管理面板中加载API
  • $hook标识文件edit.php,该文件生成帖子列表(或页面,或自定义帖子类型)。因此,如果当前页面是一个列表,而不是“新建帖子”或“编辑帖子”面板,脚本将被中断
  • 最后一次机会是您上面指定的帖子类型的“新建”或“编辑”面板。只有在那里,地图API才会被加载
  • 不要忘记保存地图DOM元素的自定义元框