Как загрузить внешние скрипты с относительным протоколом (//ajax.googleapis.com/...)?
Согласно Codex, wp_enqueue_script поддерживает относительные протоколы или протокол-агностические внешние ссылки: "Удаленные ресурсы могут быть указаны с URL, независимым от протокола, например '//otherdomain.com/js/theirscript.js'."
Но я не вижу этого в работе:
wp_enqueue_script('google-maps', '//maps.googleapis.com/maps/api/js?&sensor=false', array(), '3', true);
Вывод:
<script type='text/javascript' src='http://localhost:25898//maps.googleapis.com/maps/api/js?sensor=false&ver=3'></script>
Обратите внимание, что URL с относительным протоколом добавляется к URL сайта.
Представленный вами код работает корректно и в результате в HTML-выводе получается следующее:
<script type='text/javascript' src='//maps.googleapis.com/maps/api/js?sensor=false&ver=3'></script>
Протестировано на WordPress 3.5 с использованием этого фрагмента кода:
add_action('wp_enqueue_scripts', 'test');
function test() {
wp_enqueue_script('google-maps', '//maps.googleapis.com/maps/api/js?&sensor=false', array(), '3', true);
}
URL-адреса, относительные к протоколу, были добавлены 7 месяцев назад: http://core.trac.wordpress.org/ticket/16560
Otto
Хорошо, значит дело не в версии WordPress, которую я использую. Так что же может вызывать разницу в поведении?
Michiel van Oosterhout
Этот код был добавлен 7 месяцев назад, но если посмотреть на тикет, у него стоит milestone 3.5, так что да, скорее всего это новое поведение в версии 3.5.
Otto
Ах да, я смотрел на поле 'Version', где стояло 3.1, но это версия WordPress на момент создания тикета.
Michiel van Oosterhout
Думаю, эта проблема встречается в 3.3.1. Только что столкнулся с тем же самым - обновление до последней версии исправило ситуацию.
John B