Вопрос или проблема
Я добавил все свои скрипты в functions.php, чтобы они загружались до тега </body>, передав ‘true’ в пятом аргументе. Это работает для всех, кроме jquery. Есть идеи, что я делаю не так?
wp_enqueue_script('jquery','','','',true);
wp_enqueue_script('modernizr', 'http://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.2/modernizr.js', array('jquery'), false, true);
wp_enqueue_script('my-javascript', get_template_directory_uri() . '/js/my-javascript.js', array('jquery', 'modernizr'), false, true);
wp_enqueue_script('jquery-ui', get_template_directory_uri() . '/js/jquery-ui.min.js', array('jquery'), false, true);
Попробуйте добавить это в functions.php
<?php
// Пользовательский скрипт для переноса JavaScript из заголовка в подвал
function remove_head_scripts()
{
remove_action('wp_head', 'wp_print_scripts');
remove_action('wp_head', 'wp_print_head_scripts', 9);
remove_action('wp_head', 'wp_enqueue_scripts', 1);
add_action('wp_footer', 'wp_print_scripts', 5);
add_action('wp_footer', 'wp_enqueue_scripts', 5);
add_action('wp_footer', 'wp_print_head_scripts', 5);
}
add_action('wp_enqueue_scripts', 'remove_head_scripts');
?>
.
Ответ или решение
Чтобы корректно подключить jQuery в WordPress перед закрывающим тегом </body>
, необходимо учитывать несколько ключевых моментов. В данной ситуации, вы упомянули о том, что правильно обрабатываете скрипты с помощью функций enqueuing и используете аргумент true
, чтобы загружать скрипты в футере. Однако jQuery может не загружаться в соответствии с вашими ожиданиями. Давайте внимательно рассмотрим, как это исправить.
1. Проверка правильности подключения jQuery
WordPress автоматически подключает jQuery только в заголовке по умолчанию. Если вы хотите, чтобы jQuery загружался в футере, следует убедиться, что вы не переопределяете стандартное поведение WordPress. Для корректного подключения jQuery в футере выполните следующие шаги:
function custom_enqueue_scripts() {
// Удаляем стандартное подключение jQuery
wp_deregister_script('jquery');
// Подключаем jQuery из CDN или своей версии
wp_enqueue_script('jquery', 'https://code.jquery.com/jquery-3.6.0.min.js', array(), null, true);
// Подключаем другие скрипты
wp_enqueue_script('modernizr', 'http://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.2/modernizr.js', array('jquery'), false, true);
wp_enqueue_script('my-javascript', get_template_directory_uri() . '/js/my-javascript.js', array('jquery', 'modernizr'), false, true);
wp_enqueue_script('jquery-ui', get_template_directory_uri() . '/js/jquery-ui.min.js', array('jquery'), false, true);
}
add_action('wp_enqueue_scripts', 'custom_enqueue_scripts');
2. Перенос скриптов в футер
Вы также упомянули использование функции для перемещения скриптов из <head>
в футер. Однако это может вызвать конфликты. Вместо этого, сфокусируемся на стандартном подходе WordPress, чтобы избежать лишних обращений. Возможно, стоит убрать вашу функцию remove_head_scripts
.
3. Оптимизация порядка загрузки
Если у вас остались проблемы с порядком загрузки, попробуйте явным образом указать зависимости при подключении скриптов. Например, если my-javascript.js
зависит от jQuery и Modernizr, то убедитесь, что это правильно отражено в параметрах array()
функции wp_enqueue_script()
:
wp_enqueue_script('my-javascript', get_template_directory_uri() . '/js/my-javascript.js', array('jquery', 'modernizr'), false, true);
4. Проверка работы
После внесения изменений убедитесь, что они применены. Откройте консоль разработчика (F12 в большинстве браузеров) и проверьте, загружается ли jQuery в футере и нет ли конфликтов между скриптами.
Заключение
Следуя этим рекомендациям, вы сможете корректно подключить jQuery и другие скрипты в конце страницы перед закрывающим тегом </body>
. Это не только улучшит производительность вашего сайта, снизив время загрузки, но и обеспечит стабильность работы всех скриптов. В случае возникновения сложностей, ознакомьтесь с документацией WordPress или проконсультируйтесь с сообществом.