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

jquery

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

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

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

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

<?php wp_head(); ?>
[/php]

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

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

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

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

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

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

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

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

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

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

[javascript]
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);
});

});
[/javascript]

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

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


Posted

in

,

by

Tags:

Comments

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

  1. maxx Avatar
    maxx

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

    1. dreamhelg Avatar
      dreamhelg

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

  2. Gelios_west Avatar
    Gelios_west

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

  3. Parviz Avatar

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

  4. alexpts Avatar

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

  5. kstu Avatar

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

  6. DiamondSteel Avatar

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

  7. begenote Avatar

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

  8. alexpts Avatar

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

  9. Дмитрий Avatar

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

  10. Артём Avatar

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

  11. Alek Avatar
    Alek

    пжл помогите разобраться: поставил 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. Анна Avatar

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

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

    1. Анна Avatar
      Анна

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

  13. […] Первая подходящая статья мне попалась переводная: «Правильное подключение JQuery». Все разжевано. В конце интересная заметка как […]

  14. chdamir Avatar

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

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

  15. Arto Avatar
    Arto

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

  16. Artem Avatar

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

  17. Константин Avatar

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

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

  18. Olunka Avatar

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

  19. Ирина Avatar

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

  20. Вадим Avatar

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

    1. Вадим Avatar

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

      $(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. Алексей Avatar

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

  22. Ксения Avatar

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

  23. Кирилл Avatar

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

  24. Romeo Avatar
    Romeo

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

    1. Санек Avatar
      Санек

      “гдн знак $ надо менять на $j”

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

  25. Онтомн Avatar
    Онтомн

    Привет)

    У меня, в пока ещё неработающем джейквери-скрипте, есть несколько вариаций применения бакса. Все ли мне нужно заменять на «$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»? Ну и так далее, там много всякого. Как непрограммист, логику самостоятельно не улавливаю, подскажите.

Leave a Reply to Хорошие ссылки по работе с JQuery в WordPress | Хисяметдинов Дамир | Балаково, создание сайтов, 927-621-3606 Cancel reply

Your email address will not be published. Required fields are marked *