我正在开发一个使用谷歌地图API的插件。插件以这种方式排队脚本:
wp_enqueue_script(\'google-maps\', \'http://maps.google.com/maps/api/js?sensor=false&callback=initialize&language=en-us\', array(\'jquery\'), false, true);
考虑到其他插件/主题可能使用相同的地图库
$handle
可能不同,验证
wp_script_is($handle,\'registered\')
没有意义。复制排队脚本导致JS错误:
You have included the Google Maps API multiple times on this page. This may cause unexpected errors.
关于所描述的内容,我构建了一个搜索思想的代码$wp_scripts
对于Google Maps脚本并取消设置,如果发现:
global $wp_scripts;
foreach ($wp_scripts->registered as $key => $script) {
if (preg_match(\'#maps\\.google(?:\\w+)?\\.com/maps/api/js#\', $script->src)) {
unset($wp_scripts->registered[$key]);
}
}
问题是:如何检查和重新分配已删除脚本的依赖关系(如果它们是由其他插件/主题设置的)。将会发生什么以及如何处理多个插件可能使用同一个插件的事实
&callback=initialize
Google Maps API脚本的参数。
最合适的回答,由SO网友:Khaled Sadek 整理而成
EDIT : 使用wp_enqueue_script
根据需要(根据需要在jQuery之后的页眉或页脚中排队)将文件排队,如:gmap.js
包含在插件中
wp_enqueue_script(\'custom-gmap\', plugin_dir_url( __FILE__ ).\'inc/js/gmap.js\', array(\'jquery\'), false, true);//just change your path and name of file
将其写入Js文件:)
$(document).ready(function() {
if (typeof google === \'object\' && typeof google.maps === \'object\') {
return;
}else{
$.getScript( \'http://maps.google.com/maps/api/js\', function() {});
}
});
http://codepen.io/khaled-sadek/pen/WwvOGb
SO网友:majick
如果一个脚本已经排队,你可以结合你的答案来检查谷歌地图脚本,并将回退添加到@Kiki建议的javascript检查中,而不是删除它。。。
add_action(\'wp_enqueue_scripts\',\'google_maps_script_loader\',999);
function google_maps_script_loader() {
global $wp_scripts; $gmapsenqueued = false;
foreach ($wp_scripts->registered as $key => $script) {
if (preg_match(\'#maps\\.google(?:\\w+)?\\.com/maps/api/js#\', $script->src)) {
$gmapsenqueued = true;
}
}
if ($gmapsenqueued) {
wp_enqueue_script(\'custom-gmap\', plugin_dir_url( __FILE__ ).\'inc/js/gmap.js\', array(\'jquery\'), false, true);
} else {
wp_enqueue_script(\'google-maps\', \'http://maps.google.com/maps/api/js?sensor=false&callback=initialize&language=en-us\', array(\'jquery\'), false, true);
}
}