当用户在输入字段中输入几个字母时,我的插件正在使用Google Maps API自动建议位置。
为此,我按如下方式对Google Maps API进行了排队:
wp_register_script( 'auto_location_map_library', 'http://maps.googleapis.com/maps/api/js?key=' . get_option('auto_location_maps_key') . '&sensor=false&libraries=places', array('jquery'), '1.0', false);
wp_enqueue_script( 'auto_location_map_library' );
一切正常,我确实得到了自动建议。但是,无论何时对已包含Google地图库的主题进行测试,它都会完全崩溃。
我已尝试在我的插件中将主题库调用出列,但这不起作用,并不是一个很好的解决方案。
是否存在类似于我不知道的jQuery中使用的noConflict Google Maps调用?
感兴趣的是,引用自我提示的代码如下:
jQuery( document ).ready(function() {
function initialize() {
var autocompleteOptions = {
<?php if (!(get_option('auto_location_countrycode') == '')) { ?>
componentRestrictions: {country: '<?php echo get_option('auto_location_countrycode'); ?>'},
<?php } ?>
};
if (jQuery('#search_location').length) {
var input = document.getElementById('search_location');
var autocomplete = new google.maps.places.Autocomplete(input, autocompleteOptions);
}
}
google.maps.event.addDomListener(window, 'load', initialize);
});
答案 0 :(得分:0)
我遇到了与my plugin相同的问题。
尝试以下方法:
add_action('wp_enqueue_scripts', 'randomfunction234_deregister_scripts',999);
add_action('wp_head', 'randomfunction234_deregister_scripts',999);
add_action('init', 'randomfunction234_deregister_scripts',999);
add_action('wp_footer', 'randomfunction234_deregister_scripts',999);
add_action('wp_print_scripts', 'randomfunction234_deregister_scripts',999);
function randomfunction234_deregister_scripts() {
$map_handle = '';
global $wp_scripts;
if (isset($wp_scripts->registered) && is_array($wp_scripts->registered)) {
foreach ( $wp_scripts->registered as $script) {
if ( $script->handle !== 'YOUR_MAPS_API_ENQUEUE_HANDLE' ){
if ( strpos($script->src, 'maps.google.com/maps/api/js') !== false || strpos($script->src, 'maps.googleapis.com/maps/api') !== false || strpos($script->src, 'maps.googleapis') !== false || strpos($script->src, 'maps.google') !== false) {
if (!isset($script->handle) || $script->handle == '') {
$script->handle = 'remove-this-map-call';
}
unset($script->src);
$map_handle = $script->handle;
if ($map_handle != '') {
$wp_scripts->remove( $map_handle );
$map_handle = '';
break;
}
}
}
}
}
}
在您排队Google Maps API时,请务必将YOUR_MAPS_API_ENQUEUE_HANDLE
更改为您的排队句柄名称,在您的情况下为auto_location_map_library
。
此脚本执行的操作尝试取消注册wp_enqueue_scripts
,wp_head
,init
,wp_footer
和wp_print_scripts
挂钩中的任何排队脚本。
警告:这不会取消注册任何其他插件或主题硬编码的脚本 - 这些将永远是我们方面的痛苦。