Очередной блог фрилансера

коротко и полезно о веб-разработке

Menu
  • О чем это все
Menu

Подключение JQuery в WordPress (правильный способ)

21.06.200915.09.2009

jquery

Я много раз писала про JQuery, в том числе и совместном его использовании в WordPress. Но о самом главном — о том как же все-таки правильно подключить его в шаблон, не разу не говорила, поскольку не придавала этому большого значения. И сегодня пришло время исправиться, и написать небольшую заметку об этом.

Если хотите, вы можете просто загрузить JQuery, положить на свой сервер и прописать ссылку на него в header.php, в секции <head>. Но это может причинить вам неудобства. Одна из причин — некоторые плагины использующие библиотеку JQuery, будут пытаться ее загрузить. Это может вызвать проблемы, поскольку плагину не будет известно, что она уже загружена.

Вторая причина в том, что Worpress уже включает в себя копию JQuery. Далее вы узнаете как можно загрузить JQuery в свою тему, правильным способом. Вставьте следующий код в файл header.php, в секции <head>:

<?php wp_enqueue_script("jquery"); ?>

<?php wp_head(); ?>

Ваша тема вероятно уже включает в себя функцию wp_head, так что убедитесь что вы расположили вызов функции wp_enqueue_script ДО функции wp_head. Теперь вы можете включить вызов своего собственного JQuery JavaScript-файла ПОСЛЕ функции wp_head.

<script type="text/javascript"
   src="<?php bloginfo("template_url"); ?>/js/yourScript.js"></script>

(прим. автора Функция wp_enqueue_script(), как раз используется для безопасного подключения javascript в тему WordPress. Она может принимать следующие параметры:

<?php wp_enqueue_script( $handle, $src, $deps, $ver ); ?>

$handle
(строка) (обязательный) Название скрипта. Без регистра.
По умолчанию: Нет

$src
(строка) (необязательный) Путь к скрипту из корневой директории WordPress. Например: «/wp-includes/js/scriptaculous/scriptaculous.js«. Этот параметр необходим только когда WordPress ничего не знает об этом скрипте.
По умолчанию: Нет

$deps
(массив) (необязательный) Массив указателей на любые скрипты, от которых зависит этот скрипт; скрипты, которые должны быть загружены до этого скрипта. false — если зависимостей нет. Этот параметр необходим только в том случае, когда WordPress ничего не знает об этом скрипте.
По умолчанию: Нет

$ver
(строка) (необязательный) Строка указывает номер версии скрипта, если их несколько. По умолчанию значение false. Этот параметр используется для обеспечения отправки пользователю, правильной версии скрипта, независимо от кэша, и он обязательно должен быть включен, если доступен номер версии, и он влияет на работу скрипта.
По умолчанию: Нет).

В принципе вы уже можете действовать, но есть некоторые соображения. Например, избежать в будущем возможных конфликтов с другими библиотеками. Вы конечно не собираетесь сразу использовать несколько JS-библиотек, но лучше предусмотреть, чем потом сожалеть.

Чтобы максимально обезопасить себя от конфликтов, в можете перевести JQuery в «неконфликтный» режим и использовать другой шорткод. В нашем примере «$j» вместо дефолтного «$». Стандартный шорткод «$», например, может конфликтовать с Prototype. Далее пример безопасного использования JQuery:

var $j = jQuery.noConflict();

$j(function(){

    $j("#sidebar li a").hover(function(){
    	$j(this).stop().animate({
    		paddingLeft: "20px&amp;"
    	}, 400);
    }, function() {
    	$j(this).stop().animate({
    		paddingLeft: 0
    	}, 400);
    });

});

Можете ли вы узнать этот код? Мы использовали его для добавления анимации ссылок в сайдабре темы.

Оригинал статьи.

29 комментариев

  1. maxx:
    21.06.2009 в 12:54

    Интересная статья, но есть вопрос. Зачем у вас в блоге jQuery подключается 2 раза? Причем версии 1.2.6 и 1.3.2.

    Ответить
    1. dreamhelg:
      21.06.2009 в 12:59

      именно потому, что когда я делала свою тему, я еще мало что знала о правильном подключении jquery в WordPress, спасибо что сказали, надо будет исправить ;)

      Ответить
  2. Gelios_west:
    28.07.2009 в 14:21

    Большое Спасибо очень помогло

    Ответить
  3. Parviz:
    22.08.2009 в 20:58

    Спасибо! Долго мучался со скачанной темой WordPress, из-за конфликтов. Ваша статья помогла!!!

    Ответить
  4. alexpts:
    11.10.2009 в 17:48

    А лучше подключать jQuery из api google, там он gzip отдается + кэширование лучше.

    Ответить
  5. kstu:
    16.10.2009 в 10:58

    Почему-то все ровно лезит 2 раза jquery… 1 раз от плагина Next Gen Gallery второй раз — то что я вставляю…

    Ответить
  6. DiamondSteel:
    04.01.2010 в 15:50

    А если jquery требуется для плагина? И не известно подключена ли эта библиотека уже в теме или другим плагином.
    Как правильно подключить jquery в плагине?

    Ответить
  7. begenote:
    25.01.2010 в 17:38

    Оно то все хорошо, но вот wp_head() подключает свою версию js, и вызов особо не не помогает, есть ли способ отключить jquery вообще? Странным образом скрипты не хотят работать, даже если их использовать после wp_head(), помогают лишь некоторые манипуляции с functions.php, в которых я не совсем уверен… в противном случае все плагины для jquery грузятся в коде до библиотеки.

    Ответить
  8. alexpts:
    12.02.2010 в 21:57

    wp_head() не подключает ничего, скорее всего какой-то плагин вешает на фильр wp_head подключение jQuery, для того чтобы сама бибилиотека не грузилась дважды и нужн оиспользовать функцию wp_enqueue_script, только вот саму библиотеку не стоит так грузить, как на писано на этой странице. Если скрипт использует jQuery, то нужно с помощью функции загрузить пользовательский скрипт и указать в массиве 3 параметром, используемую библиотеку, т.е. jquery.

    Ответить
  9. Дмитрий:
    29.05.2011 в 19:15

    Установил Disqus, активировал его перестал работать nivo slider, в чем может быть беда?
    Отключаю Дискус, слайдер опять работает.
    Как выглядит проблема. У меня слайдер стоит на главной странице, после того, при автивированном дискусе, открывается сайт нормально, но слайдер вместо показа картинок, показывает крутящееся колесо, якобы что-то он пытается загрузить.
    Просто не знаю даже куда обратиться, решил туда, где хоть немного речь идет о дискусе и джикверри.

    Ответить
  10. Артём:
    30.10.2011 в 01:50

    Спасибо. Долго искал как подключить яваскрипт и нашел у вас ответ.

    Ответить
  11. Alek:
    05.11.2011 в 20:44

    пжл помогите разобраться: поставил java калькулятор c jQuery-слайдером в тему WordPress, отладил — работает в опере, файрфоксе, гуглхроме, сафари, но в долбаном интернет эксплорере не отображается jQuery-слайдер — точнее рисунок отображается а ползунок не двигается. Библиотеки грузятся с ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js и ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js
    Пробовал как тут рекомендовалось в header.php вставлять:
    до и после полный путь

    все равно в IE ползунок не двигается, что можно сделать? посоветуйте пжл

    Ответить
  12. Анна:
    05.12.2011 в 02:37

    Доброго времени!
    А если у меня в крде страницы есть такие строчки:

    то это у меня java подключена или нет? очень хочется, чтоб была java и jquerry, но никак не могу разобраться, что надо делать ((

    Ответить
    1. Анна:
      05.12.2011 в 02:40

      Ах ты ж.. не отобразилосью.. попробую так
      script type=»text/javascript» src=»/wp-content/themes/redial/js/scripts.js» ></script

      Ответить
  13. Уведомление: Хорошие ссылки по работе с JQuery в WordPress | Хисяметдинов Дамир | Балаково, создание сайтов, 927-621-3606
  14. chdamir:
    28.02.2012 в 16:18

    Спасибо за хороший перевод. До сих пор актуально.
    И заметка понравилась про решение конфликта из-за $ с другими библиотеками. М.б. пригодится, если случится катать простыни на jQuery.

    Оригинальное оформление ссылок в сайдбаре. Клево.
    Только странно такое видеть внутри твитов.

    Ответить
  15. Arto:
    21.06.2012 в 08:11

    Спасибо большое! Все получилось

    Ответить
  16. Artem:
    09.09.2012 в 21:24

    Есть ли способ подключить всё через function.php?

    Ответить
  17. Константин:
    25.09.2012 в 17:03

    О, боги, это же надо насколько простым оказалось решение моей проблемы!!!)
    Весь на эмоциях!))
    Я несколько дней уже читаю всякую оккультную литературу по ВП, чтобы заставить работать мой слайдер и галерею одновременно. Уже глаза болят и голова кружится от сотен попыток править код.
    А тут все так просто и изящно. Просто поставь одну строчку, а другую опусти под «хэд» )

    Дамочка, автор блога, целую ваши пальчики за данную ценную статью, которая даст отдых моим глазам и сохранит чуточку зрения!)
    Будьте счастливы!
    П.С. ссорри за излишнюю эмоциональность

    Ответить
  18. Olunka:
    12.11.2012 в 04:20

    Спасибо, все получилось.
    Я только начала интересоваться JQuery, ваша статья оказалась очень кстати.

    Ответить
  19. Ирина:
    07.12.2012 в 01:56

    а у меня ситуация была, может кому-то поможет, на сайте перестал работать слайдер и еще пару очень приятных и нужных «плюшек» для работы которых требуется JQuery. Я уже перекопала все что могла, и по Вашей статье пыталась положение спасти и еще начитавшись кучу материала пыталась все вернуть к жизни. Ничего не помогало. А потом как-то просто не знаю по какому наитию отключила все установленные плагины и о чудо! JQuery заработал как часы )) затем просто поочередно включала каждый плагин и проверяла. Таким образом нашла плагин который вызывал конфликт, и как я сразу не заметила что после именно его установки все перестало работать не знаю.

    Ответить
  20. Вадим:
    25.08.2013 в 23:19

    Статья 2009 года, подскажите пожалуйста как дела обстоят в конце августа 2013 года?
    А именно с движком WP 3.6, как там реализована функция подключения jQuery на автомате?

    Ответить
    1. Вадим:
      25.08.2013 в 23:23

      Пытаюсь подключить вот этот код:

      $(document).ready(function(){
      $('a[href^="#"]').bind('click.smoothscroll',function (e) {
      e.preventDefault();

      var target = this.hash,
      $target = $(target);

      $('html, body').stop().animate({
      'scrollTop': $target.offset().top
      }, 600, 'swing', function () {
      window.location.hash = target;
      });
      });

      });

      не хочет плавно прокручивать, прыгает к якорю, как будто что то не подключено.
      вот я и ищу причину

      Ответить
  21. Алексей:
    19.08.2015 в 21:26

    У меня тоже была проблема с подключением js в вордпресс. И решение не сразу далось. Я его увидел только на wordpress.org. Это от дублирования подключаемых js и css файлов. В комментариях вижу пригодится. Суть в том, что сначала смотрится есть ли вхождения для библиотеки, а уж потом подключается необходимые JS файлы.

    Ответить
  22. Ксения:
    24.02.2016 в 14:52

    Здравствуйте, есть ли какой-нибудь способ контролировать порядок вывода кода функцией wp_head(); т.е мне не нравится что у меня идет тайтл, потом идет куча кода выводимого wp_head, а потом где то внизу идет дескрипшн и кейвордц, так же выводимые функцией wp_head (у меня это делает плагин ALL in SEO pack)

    Ответить
  23. Кирилл:
    19.02.2017 в 17:30

    Спасибо за быстрое решение, у меня совсем беда с библиотеками случилась однажды

    Ответить
  24. Romeo:
    07.04.2017 в 09:39

    Спасибо большое! Помогли решить проблему на которую потратил целый день. Особо благодарен примеру в конце статьи гдн знак $ надо менять на $j.

    Ответить
    1. Санек:
      07.06.2018 в 17:09

      «гдн знак $ надо менять на $j»

      +1
      сперва попробуйте это сделать, а лишь потом (если код не сработает) начинайте подключать jQuery

      Ответить
  25. Онтомн:
    24.03.2018 в 15:33

    Привет)

    У меня, в пока ещё неработающем джейквери-скрипте, есть несколько вариаций применения бакса. Все ли мне нужно заменять на «$j»?

    Вот например:

    (function( $ ){
    $.fn.jSlabify = function(options) {
    …
    $(«body»).addClass(«slabified»);

    return this.each(function(){
    if(options)
    $.extend(settings, options);

    var $this = $(this),
    keepSpans = $(«span.slabbedtext», $this).length,

    Где-то понятно, а где-то сомневаюсь. Например: разве «var $this» нужно править «var $jthis»? Ну и так далее, там много всякого. Как непрограммист, логику самостоятельно не улавливаю, подскажите.

    Ответить

Добавить комментарий Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Об авторе

avatar

Ольга Фомина

Senior Frontend Developer
Почтовые технологии
telegram youtube instagram vkontakte

Рубрики

  • angular
  • JavaScript
  • nodejs
  • svg
  • wordpress
  • верстка
  • изучаем Jquery
  • общая
  • переводы
  • плагины Jquery
  • юнит-тесты
© 2025 Очередной блог фрилансера | Powered by Superbs Personal Blog theme