Рекомендуемый метод подключения скриптов WordPress. Имеет ряд особенностей:
load-scripts.php,То есть нужный вам js-файл не будет вставляться в HTML сразу же, как только вы использовали функцию, т.к. функция всего лишь помещает файл в очередь для вывода.
Если хотите узнать больше про правильное подключение JS-файлов WordPress, то могу порекомендовать вам мой видеоурок.
wp_enqueue_script( $handle, $src = false, $deps = array(), $ver = false, $in_footer = false )
null, то версия не будет указываться. По умолчанию — текущая версия WordPress. Подробнее про параметр.<head>. Если же указать данный параметр равным true, тогда скрипт будет вставлен непосредственно перед закрывающим тегом </body>.Для вставки скриптов во фронтэнде (т.е. не в админке), используйте хук wp_enqueue_scripts, пример:
add_action( 'wp_enqueue_scripts', 'true_include_myscript', 25 ); function true_include_myscript() { wp_enqueue_script( 'myscript', get_stylesheet_directory_uri() . '/script.js', array(), '3.0' ); }
Тот же самый пример, но только с зависимостью от jQuery:
add_action( 'wp_enqueue_scripts', 'true_include_myscript_dep_jquery', 25 ); function true_include_myscript_dep_jquery() { wp_enqueue_script( 'myscript', get_stylesheet_directory_uri() . '/script.js', array( 'jquery' ), '3.0' ); }
Не знаете, куда вставлять код?
Для подключения скриптов только в админке используйте хук admin_enqueue_scripts, например:
add_action( 'admin_enqueue_scripts', 'true_include_in_admin', 25 ); function true_include_in_admin() { wp_enqueue_script( 'myscript', ... ); }
Иногда бывает, что вы хотите подключите какой-то скрипт с CDN, это даже не обязательно должен быть jQuery, в этом случае указываем полный URL файла.
add_action( 'wp_enqueue_scripts', 'true_jquery_cdn', 25 ); function true_jquery_cdn() { wp_deregister_script( 'jquery' ); wp_enqueue_script( 'jquery', '//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' ); }
Не знаете, куда вставлять код?
Небольшое отклонение от нашей темы и от функции wp_enqueue_script() – хочу показать вам именно способы подключения JS к HTML сайта в <head> или в футере при помощи тегов <script>.
Для подключения между тегами <head> и </head> мы будем использовать хук wp_head:
add_action( 'wp_head', 'truemisha_script_to_head', 25 ); function truemisha_script_to_head() { echo '<script>alert( \'Привет\' );</script>'; }
А для футера сайта соответственно используем хук wp_footer:
add_action( 'wp_footer', 'truemisha_script_to_footer', 25 ); function truemisha_script_to_footer() { echo '<script>alert( \'Привет\' );</script>'; }
Если хотите узнать больше про правильное подключение JS-файлов WordPress, то могу порекомендовать вам мой видеоурок.
Получается, что мы подключаем необходимый JavaScript файл только там, где нужно — это же здорово!
add_action( 'admin_init', 'true_plugin_admin_init' ); add_action( 'admin_menu', 'true_plugin_admin_menu' ); function true_plugin_admin_init() { /* * Регистрируем скрипт, * он кстати должен находиться той же папке, что и файл, в который будет вставлен этот код. */ wp_register_script( 'myscript', plugins_url( '/myscript.js', __FILE__ ) ); } function true_plugin_admin_menu() { /* * Добавляем субменю настроек плагина в Параметры. */ $page_hook_suffix = add_submenu_page( 'options-general.php', 'Мой плагин', 'Настройки моего плагина', 'manage_options', 'true-plugin', 'true_plugin_print_page' ); /* * Нетрудно догадаться, что вся фишка кроется в переменной $page_hook_suffix */ add_action( 'admin_print_scripts-' . $page_hook_suffix, 'true_plugin_admin_scripts' ); } function true_plugin_admin_scripts() { /* * Подключаем наш уже зарегистрированный ранее скрипт. */ wp_enqueue_script( 'myscript' ); } function true_plugin_print_page() { /* * Cодержимое страницы настроек. */ echo 'Привет'; }
Все скрипты, перечисленные в этой таблице, регистрировать не нужно, так как они уже присутствуют в ядре WordPress и зарегистрированы, достаточно указать их идентификатор при подключении, например: wp_enqueue_script( 'идентификатор' ) или:
wp_enqueue_script( 'jquery' );
| Идентификатор | Файл | Зависимости |
|---|---|---|
| jcrop | /wp-includes/js/jcrop/jquery.Jcrop.min.js | |
| swfobject | /wp-includes/js/swfobject.js | |
| swfupload | /wp-includes/js/swfupload/swfupload.js | |
| swfupload-queue | /wp-includes/js/swfupload/plugins/swfupload.queue.js | |
| swfupload-handlers | /wp-includes/js/swfupload/handlers.min.js | |
| jquery | /wp-includes/js/jquery/jquery.js | json2 (для AJAX запросов) |
| jquery-form | /wp-includes/js/jquery/jquery.form.min.js | jquery |
| jquery-color | /wp-includes/js/jquery/jquery.color.min.js | jquery |
| jquery-masonry | /wp-includes/js/jquery/jquery.masonry.min.js | jquery |
| jquery-ui-core | /wp-includes/js/jquery/ui/jquery.ui.core.min.js | jquery |
| jquery-ui-widget | /wp-includes/js/jquery/ui/jquery.ui.widget.min.js | jquery |
| jquery-ui-mouse | /wp-includes/js/jquery/ui/jquery.ui.mouse.min.js | jquery |
| jquery-ui-accordion | /wp-includes/js/jquery/ui/jquery.ui.accordion.min.js | jquery |
| jquery-ui-autocomplete | /wp-includes/js/jquery/ui/jquery.ui.autocomplete.min.js | jquery |
| jquery-ui-slider | /wp-includes/js/jquery/ui/jquery.ui.slider.min.js | jquery |
| jquery-ui-tabs | /wp-includes/js/jquery/ui/jquery.ui.tabs.min.js | jquery |
| jquery-ui-sortable | /wp-includes/js/jquery/ui/jquery.ui.sortable.min.js | jquery |
| jquery-ui-draggable | /wp-includes/js/jquery/ui/jquery.ui.draggable.min.js | jquery |
| jquery-ui-droppable | /wp-includes/js/jquery/ui/jquery.ui.droppable.min.js | jquery |
| jquery-ui-selectable | /wp-includes/js/jquery/ui/jquery.ui.selectable.min.js | jquery |
| jquery-ui-position | /wp-includes/js/jquery/ui/jquery.ui.position.min.js | jquery |
| jquery-ui-datepicker | /wp-includes/js/jquery/ui/jquery.ui.datepicker.min.js | jquery |
| jquery-ui-resizable | /wp-includes/js/jquery/ui/jquery.ui.resizable.min.js | jquery |
| jquery-ui-dialog | /wp-includes/js/jquery/ui/jquery.ui.dialog.min.js | jquery |
| jquery-ui-button | /wp-includes/js/jquery/ui/jquery.ui.button.min.js | jquery |
| jquery-effects-core | /wp-includes/js/jquery/ui/jquery.ui.effect.min.js | jquery |
| jquery-effects-blind | /wp-includes/js/jquery/ui/jquery.ui.effect-blind.min.js | jquery-effects-core |
| jquery-effects-bounce | /wp-includes/js/jquery/ui/jquery.ui.effect-bounce.min.js | jquery-effects-core |
| jquery-effects-clip | /wp-includes/js/jquery/ui/jquery.ui.effect-clip.min.js | jquery-effects-core |
| jquery-effects-drop | /wp-includes/js/jquery/ui/jquery.ui.effect-drop.min.js | jquery-effects-core |
| jquery-effects-explode | /wp-includes/js/jquery/ui/jquery.ui.effect-explode.min.js | jquery-effects-core |
| jquery-effects-fade | /wp-includes/js/jquery/ui/jquery.ui.effect-fade.min.js | jquery-effects-core |
| jquery-effects-fold | /wp-includes/js/jquery/ui/jquery.ui.effect-fold.min.js | jquery-effects-core |
| jquery-effects-highlight | /wp-includes/js/jquery/ui/jquery.ui.effect-highlight.min.js | jquery-effects-core |
| jquery-effects-pulsate | /wp-includes/js/jquery/ui/jquery.ui.effect-pulsate.min.js | jquery-effects-core |
| jquery-effects-scale | /wp-includes/js/jquery/ui/jquery.ui.effect-scale.min.js | jquery-effects-core |
| jquery-effects-shake | /wp-includes/js/jquery/ui/jquery.ui.effect-shake.min.js | jquery-effects-core |
| jquery-effects-slide | /wp-includes/js/jquery/ui/jquery.ui.effect-slide.min.js | jquery-effects-core |
| jquery-effects-transfer | /wp-includes/js/jquery/ui/jquery.ui.effect-transfer.min.js | jquery-effects-core |
| schedule | /wp-includes/js/jquery/jquery.schedule.js | jquery |
| suggest | /wp-includes/js/jquery/suggest.min.js | jquery |
| thickbox | /wp-includes/js/thickbox/thickbox.js | |
| jquery-hotkeys | /wp-includes/js/jquery/jquery.hotkeys.min.js | jquery |
| sack | /wp-includes/js/tw-sack.min.js | |
| quicktags | /wp-includes/js/quicktags.min.js | |
| autosave | /wp-includes/js/autosave.min.js | |
| wp-ajax-response | /wp-includes/js/wp-ajax-response.min.js | |
| wp-lists | /wp-includes/js/wp-lists.min.js | |
| common | /wp-admin/js/common.min.js | |
| password-strength-meter | /wp-admin/js/password-strength-meter.min.js | |
| comment-reply | /wp-includes/js/comment-reply.min.js | |
| media-upload | /wp-admin/js/media-upload.min.js | |
| word-count | /wp-admin/js/word-count.min.js | |
| json2 | /wp-includes/js/json2.min.js | |
| plupload | /wp-includes/js/plupload/plupload.js | |
| underscore | /wp-includes/js/underscore.min.js | |
| backbone | /wp-includes/js/backbone.min.js |
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Михаил, здравствуйте! Возник вопрос: в Кодексе в описании этой функции нет параметра in_footer. Так как все-таки на самом деле? Дело в том, что занимаюсь переносом скриптов из хедера в подвал, и было бы очень удобно, если бы функция действительно принимала этот параметр)
Добрый день)
а в чем собственно вопрос? этот параметр есть, по умолчанию принимает значение
falseВопрос только в том, что на странице описания этой функции в Кодексе об этом параметре нет ни слова. А у Вас прочитала, вот и спрашиваю.
русская версия Кодекса мягко говоря не очень) да и в английской иногда бывают недочеты.
И вернулась сказать спасибо) Действительно есть и действительно работает. Большое спасибо :)
пожалуйста)
Спасибо за статью.
Нашел тут сайт с русским сервером скриптов
http://salat-production.ru/interactive-jquery-mootools-cdn.php
Доброй ночи.
Подскажи, пожалуйста, а как подключить новый медиазагрузчик?
Вот такой код выводит "старый"
пробовала менять media-upload на plupload-full, но не работает.
$deps
(массив) массив идентификаторов скриптов, от которых зависит подключаемый скрипт
Вот про $deps я вообще ничего не понял какие там должны быть идентификаторы?? Что от чего зависит (т.е как может быть что бы скрипты друг от друга зависили)??
Можете пожалуйста подробнее растолковать.
Ну например у вас есть какой-то код jQuery и он не будет работать пока не поключена сама библиотека jQuery — один из примеров такой зависимости.
Да например js код какой то не может работать без jq но можно прописать же так например
и все будет зависеть и все без всяких array в чем тогда разница?
Дело в том, что скрипты могут подключаться в разных местах, не только в теме, но и в плагинах, поэтому, чтобы все файлы задействовались в правильном порядке, нужно указывать этот параметр $deps.
Все понял спасибо. И еще как сделать так что бы Jquery подключался у меня в wp_footer перед боди. Пишу вот так wp_enqueue_script('jquery'); но он у меня в шапке подключается.
Нужно провернуть примерно такую комбинацию:
Все спасибо большое!
Рад помочь :)
Всем здравствуйте!!! Извините за вопрос, скорее всего он для всех Вас покажется очень глупым. Я прописываю такой код в WP
Ваш департамент<span style="color: #c43b1d;">*</span><br /><select id="change" onChange = "onChange()"><option></option> <option value="1">Департамент бухгалтерского и налогового учета</option> <option value="2">Департамент взаимодействия с телерадиоканалами</option> <option value="3">Департамент государственных закупок и логистики</option> <option value="4">Департамент информационных технологий</option> <option value="5">Департамент казначейства</option></select> Ваш отдел<span style="color: #c43b1d;">*</span><br /><select id = "change1" style="display: none;"><option></option> <option value="1">Отдел бухгалтерского учета</option> <option value="2">Отдел налогового учета</option> </select> <select id = "change2" style="display: none;"><option></option> <option value="1">Отдел работы с радиоканалами</option> </select> <select id = "change3" style="display: none;"><option></option> <option value="1">Отдел государственных закупок</option> <option value="2">Отдел планирования государственных закупок и логистики</option> <option value="2">Отдел электронных закупок</option> </select> <select id = "change4" style="display: none;"><option></option> <option value="1">Отдел администрирования корпоративных систем и управления безопасностью информационных технологий</option> <option value="2">Отдел администрирования серверов и операционных систем</option> <option value="1">Отдел развития и эксплуатации транспортных сетей и коммуникаций</option> <option value="2">Отдел технической поддержки и регионального управления</option> </select> <select id = "change5" style="display: block;"><option></option> <option value="1">Отдел бухгалтерского учета</option> <option value="2">Отдел налогового учета</option> <option value="3">Отдел работы с телерадиоканалами</option> <option value="4">Отдел государственных закупок</option> <option value="5">Отдел планирования государственных закупок и логистики</option> <option value="6">Отдел электронных закупок</option> <option value="7">Отдел администрирования корпоративных систем и управления безопасностью информационных технологий</option> <option value="8">Отдел администрирования серверов и операционных систем</option> <option value="9">Отдел развития и эксплуатации транспортных сетей и коммуникаций</option> <option value="0">Отдел технической поддержки и регионального управления</option></select> <SCRIPT LANGUAGE = "JavaScript" TYPE = "text/javascript"> function onChange(){ var objSel = document.getElementById("change");; var select1 = document.getElementById("change1"); var select2 = document.getElementById("change2"); var select3 = document.getElementById("change3"); var select4 = document.getElementById("change4"); var select5 = document.getElementById("change5"); if (objSel.value == 1) { select1.style.display = 'block'; select2.style.display = 'none'; select3.style.display = 'none'; select4.style.display = 'none'; select5.style.display = 'none'; } if (objSel.value == 2) { select2.style.display = 'block'; select1.style.display = 'none'; select3.style.display = 'none'; select4.style.display = 'none'; select5.style.display = 'none'; } if (objSel.value == 3) { select3.style.display = 'block'; select1.style.display = 'none'; select2.style.display = 'none'; select4.style.display = 'none'; select5.style.display = 'none'; } if (objSel.value == 4) { select4.style.display = 'block'; select2.style.display = 'none'; select3.style.display = 'none'; select1.style.display = 'none'; select5.style.display = 'none'; } } </script>и если честно, то он у меня не работает(((( а я не знаю куда вставлять код, чтобы подключить JS((( ПОМОГИТЕ ПОЖАЛУЙСТА
Здравствуйте! Скажите, какая у этого кода задача?
у меня имеется два selectmenu. При выборе департамента, у меня автоматически должен появляться отдел. Если этот код сохранить через блокнот в расширении .js, то все идеально работает, а на WР никак не могу подключить. На сколько я поняла, мне необходимо сохранить мой скрипт в расширении js и положить его в папку плагины, а потом просто ссылаться на него, но никак не разобралась и ничего не заработало((((
то есть, если сохранить в блокноте в расширении .html то все работатет
В таком случае сначала просто вставьте этот код в WordPress туда, где его нужно вывести, в какой-нибудь php-файл.
Сохранять его в .js неправильно, так как там также имеется и html код.
здравствуйте. хочу реализовать на блоге вордпресс печать по этой инструкции: _http://loco.ru/materials/107-php-print-this-page-feature-javascript. я не понимаю, как подключить скрипт через отдельный Js-файл. пробовал, но не получается. можете объяснить и сколько стоит?
Здравствуйте. Вот так:
Миша, огромное спасибо, заработало...только в бланке печати русские буквы отображаются в виде символов (когда подключаю Js файл). когда скрипт просто вставляю в тело, то буквы отображаются нормально. может еще что-то надо указать, чтобы кириллица отображалась?
А есть тег?
да, в header.php присутствует.
Добрый день!
Помогите пожалуйста, хочу добавить себе всплывающее меню, как в примере http://codepen.io/laviperchik/pen/uyqmh, но не получается добавить javascript, не хочет открываться, я вызываю джаву в function.php:
кидаю в папку с темой:
но ничего не происходит, что я не так делаю?
Большое человеческое спасибо!
Добрый день!
Дочерние темы используете?
Зависимости от jQuery проставьте тоже.
День добрый! Спасибо за статью. Зарегистрировал файл, подключил. А как теперь вывести этот файл, в код php, исполнить
Добрый день!
Сам выведется, если wp_head(), wp_footer() используете.
Михаил, здравствуйте. Подскажите пожалуйста, есть ли смысл не подключать определенные скрипты на страницах, где они не используются, для оптимизации загрузки сайта?
Пример:
Swiper js использую только на странице Портфолио. На главной странице он по идее не нужен.
Нашел такой способ:
Такой способ нормальный, или есть еще решения?
Спасибо)
Добрый день!
is_page( ID )это точно не есть гуд проверка.Лучше всего собрать и минифицировать скрипты, например через webpack.
Тем не менее у меня например действительно есть скрипт slick, который я подключаю только на странице портфолио, но тут главное использовать условные теги без привязки к пользовательским данным, например is_page_template(),
is_singular( 'тип поста' ), то есть мы не используем ID страниц, т к этот ID может меняться в админке.Понял. Спасибо)
Михаил здравствуйте, во-первых спасибо за тонну полезной информации, словами не передать как выручают куски кода которые вы даете в примерах!!!
Есть вот такой вопрос, на сайте (на главной странице, самый первый экран) - слайдер во весь экран. Во время верстки swiper подключается вебпаком в общий файл js. затем этот файл подключается в вордпресс кодом
переменная обозначена кодом
define('wpHMeal_DIR_JS', get_template_directory_uri() . '/assets/js/');во время загрузки вордпресса слайдер на главном экране как бы ломается, секунды на две или даже меньше, затем загружается и все прекрасно и правильно работает, но вот этот момент каждый раз с ломанным первым экраном прям коробит... можно конечно прелоадером спрятать.... но как правильно подключать чтобы сразу нормально отображалось?