Google Maps API key now required for admin
chrisdrake opened this issue ยท 15 comments
As per this article. This plugin no longer works until it's updated to allow an API key to be added.
https://googlegeodevelopers.blogspot.co.uk/2016/06/building-for-scale-updates-to-google.html
Great plugin though, I hope to be able to continue using it!
+1
Thanks for the feedback @chrisdrake.
My initial thoughts for passing in the key include:
- wp-config.php define
- Pass through a key with each field's arguments
- A settings page
I'm leaning towards defining the key. It's clearly not as user friendly as a settings page. However, it's my view that CMB2 and this field are already developer orientated. Any thoughts/strong opinions?
Thanks for the reply :)
I'd be more than happy to have it developer defined key because I fully agree with your point about CMB2. However I'd prefer to see it in a config file in the plugin, or perhaps in a pluggable function that we can include in our plugin or theme? I'm not too keen on it being in wp-config.php because that won't travel with the theme or plugin if it's moved.
I agree that CMB2 and this field are developer oriented and so the key should be defined in the source code. Maybe using a WordPress filter?
I like the filter approach, for the reasons chrisdrake outlined.. Doesn't make sense in a field's arguments, since the key is added just once, when the api script is registered.
This basic implementation seems to work:
public function setup_admin_scripts() {
$api_url = '//maps.googleapis.com/maps/api/js?libraries=places';
$api_key = apply_filters( 'pw-google-maps-api-key', '' );
if ( ! empty( $api_key ) ) {
$api_url .= '&key=' . $api_key;
}
wp_register_script( 'pw-google-maps-api', $api_url, null, null );
wp_enqueue_script( 'pw-google-maps', plugins_url( 'js/script.js', __FILE__ ), array( 'pw-google-maps-api' ), self::VERSION );
wp_enqueue_style( 'pw-google-maps', plugins_url( 'css/style.css', __FILE__ ), array(), self::VERSION );
}
I can add my API key by dropping this in a plugin:
add_filter( 'pw-google-maps-api-key', function() {
return 'MY_API_KEY';
});
That looks absolutely perfect and exactly the sort of thing I was rambling on about ;)
sorry,
where do i put this code in order to fix maps?
That code prevents the lookup from working but the map does load and doens't come up with the javascript error.
so? where i must put this code?
To fix this issue, i updated the method setup_admin_scripts
Please check my pull request above
just you can add in your functions.php
the below code
// add the plugin's google map api key
add_filter('os-pw-google-maps-api-key', function(){
return 'APIKEY';
});
Note : head to google map to get api key if you don't have one
thank you very much
For the lookup / autocomplete to work, you need to enable the Google Places API in your google api console.
More info: http://stackoverflow.com/a/38297390
While we wait for this to get merged in here is a little filter that might help you:
add_filter( 'cmb2_render_pw_map', function() {
wp_deregister_script( 'pw-google-maps-api' );
wp_register_script( 'pw-google-maps-api', '//maps.googleapis.com/maps/api/js?libraries=places&key=<API-KEY>', null, null );
}, 12 );
Perfect @phh ;)
Thanks it has fixed my issue too!!!