Начиная с WordPress 2.7, многие библиотеки Javascript, в том числе и jQuery, стали по-новому подключаться к теме: через Script API, посредством удобной функции wp_enqueue_script.
Регистрация jQuery в WP-темах
Вы можете активировать jQuery в WordPress двумя различными способами. Первый из них основывается на размещении приведенного ниже кода в файле header.php перед закрывающим тегом </head>.
<?php wp_enqueue_script("jquery"); ?> <?php wp_head(); ?> <script type="text/javascript"> //add jQuery code here jQuery(document).ready(function() { jQuery("p").click(function() { alert("Hello world!"); }); }); </script>
Альтернативный вариант: зарегистрировать wp_enqueue_script в файле functions.php. Если ваша тема не имеет functions.php, достаточно создать такой файл и поместить его в корневую директорию, где находятся остальные файлы шаблона темы. Просто добавьте следующий код в файл functions.php:
<?php wp_enqueue_script('jquery');/*this registers jquery*/ function jq_test(){ /*This is your custom jQuery script*/ ?> <script type="text/javascript"> jQuery(document).ready(function() { jQuery("p").click(function() { alert("Hello world!"); }); }); </script><?php } add_filter('wp_head', 'jq_test');/*this adds your script to the wp_ head() hook in the header.php file and ensures your custom jQuery script is run*/ ?>
Обход проблем с регистрацией jQuery
Первые мои попытки подключения jQuery через wp_enqueue_script неизменно заканчивались неудачей. Библиотека отказывалась работать. После длительного изучения WordPress Codex, я смог выделить для себя следующие факты:
- Если вы подключаете библиотеку jQuery в файле header.php, удостоверьтесь в том, что функция wp_enqueue_script находится выше, чем функция wp_head. Произвольный jQuery-код должен идти под функцией wp_head.
- Если вы регистрируете wp_enqueue_script в functions.php, удостоверьтесь, что ее объявление находится перед всеми остальными функциями, которые загружаются через add_filter в wp_head.
spasibo!!! ochen pomogli
Большое спасибо, очень помогло в решении проблем!
Добрый день! Спасибо большое за такую статью! Но проблема, указываю путь к своему логотипу, а у меня по прежнему вордпрессовский этот стоит, что я могу неправильно делать?
А причем тут jQuery? :)
Зависит многое от темы, которую вы используете.
Здравствуйте, есть ли какой-нибудь способ контролировать порядок вывода кода функцией wp_head(); т.е мне не нравится что у меня идет тайтл, потом идет куча кода выводимого wp_head, а потом где то внизу идет дескрипшн и кейвордц, так же выводимые функцией wp_head (у меня это делает плагин ALL in SEO pack)
В данном случае это можно контролировать через приоритет у add_action.
Подробнее про это: https://developer.wordpress.org/reference/functions/add_action/
Но ради этого придется вносить коррективы в код плагина, в результате чего его потом не получится обновить (изменения пропадут).