У меня есть это в моем functions.php
файле, и я не могу загрузить jQuery в нижний колонтитул. Впрочем, includes
файл загружается в нижний колонтитул нормально. Что еще мне нужно сделать?
function starter_scripts() {
wp_enqueue_style( 'starter-style', get_stylesheet_uri() );
wp_enqueue_script( 'jquery', '', '', '', true );
wp_enqueue_script( 'includes', get_template_directory_uri() . '/js/min/includes.min.js', '', '', true );
}
add_action( 'wp_enqueue_scripts', 'starter_scripts' );
defer
вместо этого добавить к своим тегам сценария: matthewhorne.me/defer-async-wordpress-scriptsОтветы:
Для этого сначала нужно отменить регистрацию скрипта jQuery, а затем снова зарегистрироваться. Если вы используете jQuery с WordPress, то вам нужна следующая функция.
Если вы используете версию jQuery, размещенную в Google CDN, дайте мне знать, что я изменю этот код для URL CDN Google.
источник
wp_enqueue_scripts
используется только на переднем конце, аadmin_enqueue_scripts
используется на заднемВот еще один вариант, который исключает необходимость отмены регистрации и повторной регистрации:
Это решение имитирует ядро WordPress , устанавливая
group
to1
, и именно так WordPress определяет, должен ли скрипт находиться в нижнем колонтитуле или нет (я не знаю причины этого1
, поскольку @jgraup отметил в комментариях, что это выглядит немного произвольно).источник
wp_register_script
используетadd_data( $handle, 'group', 1 )
для перемещения скриптов в нижний колонтитул. core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/… - Не могли бы вы рассказать, почему это так? Взглянув на ваш код, «группа» кажется немного произвольной. Но я могу видеть в core.trac.wordpress.org/browser/tags/4.5/src/wp-includes/… как это используется в WP_Scripts->do_item
позже. В любом случае, это может показаться наименее разрушительным ответом.Лучшее решение:
Почему это лучше, чем принятый ответ ИМО
$footer = true
.О не делать это с администратором
Если плагины добавят встроенный jquery в wp_head, произойдет сбой, когда jquery не будет загружен в этот момент, поэтому я советую вам избегать этого, пока у вас не появятся миллионы, которые редактируют ваш сайт, и вы не попытаетесь оптимизировать производительность своего администратора. Это верно и для внешнего интерфейса, поэтому вы должны следить за плохо закодированными темами или плагинами, которые принимают jquery в голове, используя встроенный код jQuery. WP и плагины регистрируют другие сценарии для административной головы с помощью jquery в deps, так что я думаю, что это не сработает.
Про это не работает
Вы должны знать, что если любой другой скрипт загружается в заголовок, имеющий jQuery в своих зависимостях, он также загрузит jQuery в заголовок прямо перед собой. И это хорошо и ожидаемо, причина существования системы wp_enqueue. Это означает, что вы скоро узнаете, если будете использовать несколько плагинов, для которых один из них потребует вызова jquery в голову. К сожалению, по умолчанию для сценариев в очереди.
Радикальное Решение
Я думаю, что это будет тормозить любой встроенный JS, который предполагает JQuery, но если это должно быть редко. Это заставит все скрипты в нижний колонтитул, независимо от того, как они в очереди.
источник
Я разработал плагин для этой конкретной проблемы. Этот плагин не связывается с WordPress jQuery, так как он загружается только во внешнем интерфейсе. Смотрите: jQuery Manager для WordPress
Почти все используют неправильную ручку
WordPress использует дескриптор ядра jquery, а не jquery:
Правильный способ сделать это
В моем примере ниже я использую официальный jQuery CDN по адресу https://code.jquery.com. Я также использую script_loader_tag, чтобы добавить некоторые атрибуты CDN.
Вы можете использовать следующий код:
источник
источник
Эй, только измени свой код, чтобы это понравилось
я думаю, что это работает нормально
добавьте эти строки в ваш файл functions.php
затем добавить скрипт в нижний колонтитул
источник
remove_action
/add_action
part, если вы собираетесь сделать это таким образом.