Очень частая ошибка «Uncaught TypeError: undefined is not a function», с которой встречаются разработчики сайтов, используя jQuery.

Часто она возникает в следствии механики jQuery noConflict.

И имеет понятные решения:

1. Если нужно выполнить команду сразу после загрузки страницы

jQuery(document).ready(function($) {
      alert('Выводим сообщение после загрузки страницы');
     // или любой другой код в том числе через $
});

2. Если нужно выполнить команды по событию на странице

(function ($) {
   $(".btn").click(function() {
      alert('Выводим сообщение после клика по кнопке');
   });
}(jQuery));

Подробнее http://api.jquery.com/jQuery.noConflict/

Тоже самое но с уклоном к WordPress тут.

Но вчера наткнулся еще на одну засаду, которая возникает при совмещении jQuery и WordPress.

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

1. Сначала jQuery

2. Потом зависимый скрипт. Например Flexslider.

3. Затем скрипты инициализации и настройки Flexslider.

Если последовательность загрузки перепутать, то получаем данную ошибку.

В WordPress, для того чтобы соблюдать последовательность, есть метод wp_enqueue_script, с параметром $deps.

Вот этот параметр я и пропустил. А именно в нем нужно указать зависимость скрипта и в этом случае WordPress выведет их в нужной последовательности, тем самым обеспечив работоспособность с защитой от ошибок.

Вот как то так 🙂