Я хотел бы реализовать несколько функций стандартного шаблона в одном из моих экземпляров WordPress.
Я пытаюсь понять, как обменять обычные вызовы jquery ниже
<script type='text/javascript' src='http:/.../wp-includes/js/jquery/jquery.js?ver=1.4.4'></script>
<script type='text/javascript' src='http://.../wp-includes/js/jquery/ui.core.js?ver=1.8.9'></script>
к этому:
<!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if necessary -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
<script>window.jQuery || document.write("<script src='js/libs/jquery-1.5.1.min.js'>\x3C/script>")</script>
Вы должны загружать jQuery с помощью
wp_enqueue_script('jquery')
— таким образом, вы не получите несколько экземпляров, если плагины тоже попытаются загрузить его.Чтобы использовать Google CDN, поместите это в свой
functions.php
;Обновление: лично я знаю, что это звучит как отговорка, но я бы не стал проверять CDN. Google чертовски надежен, и более чем вероятно, что он уже находится в кеше браузера пользователя (многие сайты используют CDN Google).
Однако я обязан ответить, что у вас есть один из двух вариантов;
Проблема с 2) заключается в том, что вам нужно внедрить этот скрипт сразу после jQuery и до того, как любые другие плагины, которые зависят от него, запускают свои скрипты. Я знаю, что единственный способ сделать это — «прослушать» jQuery, а затем вывести JavaScript при следующем вызове.
Магия? Бросьте это в свой
functions.php
;Для тех, кто в курсе, это также подключается
wp_head
сразу послеwp_print_scripts
запуска, на случай, если больше не будет сценариев для печати послеjquery
(функция работает при следующем вызове, а не при вызове экземпляра с помощью jQuery).только что заметил, что этот приятный маленький хак был добавлен в тему WordPress Roots — мило github.com/retlehs/roots/blob/master/lib/scripts.php
Этот ответ ДЕЙСТВИТЕЛЬНО плохой. Он жестко кодирует версию jQuery, поэтому он никогда не будет обновляться при обновлении WordPress. Например, текущая версия 1.12.4, это хардкоды 1.11.3. Кроме того, удалив jQuery из управления зависимостями WordPress, другие плагины не смогут его контролировать.
@JPollock Действительные точки, но вопрос заключался в том, как использовать jQuery из CDN с запасным вариантом, и поэтому я ответил. ИМО, это бывает по-разному — если вы создаете тему для выпуска, то да, это может представлять опасность. Но если вы создаете на заказ для себя/клиентов, то мне нравится идея использования явной версии jQuery в сочетании с преимуществами CDN. Я думаю, что сказать, что этот ответ «ДЕЙСТВИТЕЛЬНО плохой», немного подстрекательски и не касается другой стороны медали (полагаясь на связанный jQuery, JS вашей темы подвергается риску взлома в будущих обновлениях).
Я думаю, что ответ действительно плохой. чтобы быть более конкретным, это действительно плохо для прямой совместимости с плагинами, которые ожидают, что версия jQuery будет версией, которую объединяет ядро WordPress. Даже на клиентских сайтах вещи обновляются, часто годы спустя, людьми, не понимающими, в чем может быть разница между версиями jQuery.
Я создал и поддерживал (в течение многих лет) очень много тем WordPress, используя жестко закодированные CDN jQuery, и у меня никогда не было проблем. Если бы я сделал то же самое в общедоступной теме? Может и не та история. И хотя я согласен с вашей точкой зрения о прямой совместимости, вы, кажется, игнорируете контраргумент, что полагаясь на пакетный пакет, вы по-прежнему подвергаетесь риску. Дело в том, что это зависит, и я не думаю, что вы меня убедите в обратном. Но я ценю обратную связь, как всегда.
Мне пришлось использовать,
'window.jQuery||document.write("<script src='.esc_url(includes_url('/js/jquery/jquery.js')).'><\/script>");'
потому что wordpress переписывал мои цитаты, и я использую ядро в комплекте в качестве запасного варианта.Для WordPress 4.5.0+ :
wp_add_inline_script()
#Примечание. Измените версию и собственный локальный источник jQuery.
Две вещи, которые следует помнить об этом ответе:
«`
«`
Обратите внимание, что я все еще использую систему управления зависимостями WordPress. Кроме того, устанавливает использование HTTPS и HTTP
is_ssl()
, чтобы избежать ошибок смешанного содержимого, и позволяет WordPress диктовать номер версии.