Come posso accodare script esterni con protocollo relativo (//ajax.googleapis.com/...)?
Secondo il Codex, wp_enqueue_script supporta link esterni con protocollo relativo o protocollo agnostico: "Le risorse remote possono essere specificate con un URL protocollo-agnostico, ad esempio '//otherdomain.com/js/theirscript.js'."
Ma non funziona come previsto:
wp_enqueue_script('google-maps', '//maps.googleapis.com/maps/api/js?&sensor=false', array(), '3', true);
Output:
<script type='text/javascript' src='http://localhost:25898//maps.googleapis.com/maps/api/js?sensor=false&ver=3'></script>
Si noti che l'URL con protocollo relativo viene aggiunto all'URL del sito.
Il codice che hai postato funziona correttamente e produce questo risultato nell'output HTML:
<script type='text/javascript' src='//maps.googleapis.com/maps/api/js?sensor=false&ver=3'></script>
Testato su WordPress 3.5 con questo frammento di codice:
add_action('wp_enqueue_scripts', 'test');
function test() {
wp_enqueue_script('google-maps', '//maps.googleapis.com/maps/api/js?&sensor=false', array(), '3', true);
}
Gli URL relativi al protocollo sono stati aggiunti 7 mesi fa: http://core.trac.wordpress.org/ticket/16560
Otto
Ok, quindi non è la versione di WordPress che sto utilizzando. Allora cosa potrebbe causare la differenza nel comportamento?
Michiel van Oosterhout
Beh, quel codice è stato aggiunto 7 mesi fa, ma se guardi il ticket, ha una milestone 3.5, quindi sì probabilmente è un nuovo comportamento introdotto in 3.5.
Otto
Ah giusto, stavo guardando il campo 'Versione' che era impostato a 3.1, ma quella è la versione di WordPress al momento della creazione del ticket.
Michiel van Oosterhout
Penso che questo problema si verifichi in 3.3.1. Ho avuto lo stesso problema, l'aggiornamento all'ultima versione lo ha risolto.
John B