Вопрос или проблема
Я не могу разобраться, что вызывает два скрипта jQuery в моей теме. Даже если я выключаю все плагины, они все равно вызываются. Я не добавлял их в свой functions.php и также не в header.php или footer.php.
Может быть, это ядро WP вызывает их? Есть ли способ это выяснить?
Два скрипта jQuery, которые вызываются, следующие:
/wp-includes/js/jquery/jquery.js
/wp-includes/js/jquery/jquery-migrate.min.js
Я хочу отложить их или даже поместить в подвал, но если я не знаю, откуда они вызываются, я не могу их контролировать.
Было бы здорово, если бы у вас были какие-либо советы. Спасибо.
Если я прав, эти два js файла “только” загружаются самим WP для использования в админке, но не (и WP не загрузит их, если в этом нет необходимости) на фронтенде.
Как только плагин нуждается в них, они будут загружены (например, через функцию) на фронтенде.
(что, похоже, не в вашем случае, поскольку вы сказали ‘Даже если я выключаю все плагины’)
Также одной из причин загрузки этих двух js файлов на фронтенде может быть сама ваша Тема. (Подумайте о функциях, которые нуждаются в них для загрузки/показа “вещей”)
- Это плохо? Вовсе нет.
- Могут ли они быть в подвале? Да, могут/должны*(с точки зрения производительности это хорошее решение)*
Как вы уже упомянули, вы могли бы откладывать их. (что, на мой взгляд, не является оптимальным решением)
Примечание: Просмотрите ‘все’ файлы темы (не только файлы дочерней темы, если вы используете дочернюю тему), упоминается ли где-нибудь слово jquery или jquery-migrate.min (но я предполагаю, что вы уже это сделали).
Сказав это, с помощью следующей функции (которую можно добавить в файл functions.php вашей (дочерней) темы) эти два файла будут “насильно” помещены в подвал.
Надеюсь, это немного поможет вам и возможно это то, что вы искали.
/**
* Принудительное добавление скриптов в подвал
* @link https://developer.wordpress.org/reference/since/4.2.0/
*/
function enqueue_scripts_in_footer() {
wp_deregister_script( 'jquery' ); // https://codex.wordpress.org/Function_Reference/wp_deregister_script
wp_deregister_script( 'jquery-migrate.min' );
wp_register_script( 'jquery', '/wp-includes/js/jquery/jquery.js', array(), false, true );
wp_register_script( 'jquery-migrate.min', '/wp-includes/js/jquery/jquery-migrate.min.js', array(), false, true );
wp_enqueue_script( 'jquery', '/wp-includes/js/jquery/jquery.js', array( 'jquery' ), false, true );
wp_enqueue_script( 'jquery-migrate.min', '/wp-includes/js/jquery/jquery-migrate.min.js', array( 'jquery-migrate.min' ), false, true );
}
add_action( 'wp_enqueue_scripts', 'enqueue_scripts_in_footer' );
В качестве справки о том, что происходит в функции, посмотрите здесь:
jQuery является частью ядра WordPress. Он добавлен и включен по умолчанию. Последняя версия WordPress использует последнюю версию jQuery.
WordPress рекомендует не добавлять свой собственный файл jQuery, а использовать один из уже существующих.
Правильный способ добавить jQuery на ваш сайт WP:
function theme_scripts() {
wp_enqueue_script('jquery');
}
add_action('wp_enqueue_scripts', 'theme_scripts');
Вот ссылка, которая, я думаю, будет полезной для того, что вы ищете. http://www.ericmmartin.com/5-tips-for-using-jquery-with-wordpress/
Если вы хотите добавить свой собственный файл jQuery, вам сначала нужно отменить регистрацию встроенного файла jQuery: https://codex.wordpress.org/Function_Reference/wp_deregister_script#Example
wp_deregister_script( 'jquery' );
Ответ или решение
Что такое вызов jQuery в WordPress?
jQuery — это популярная библиотека JavaScript, интегрированная в ядро WordPress для упрощения манипуляций с элементами DOM и обработки событий. В вашем случае у вас возникла ситуация, когда вы видите, что два скрипта jQuery (файлы jquery.js
и jquery-migrate.min.js
) загружаются на вашем сайте, хотя вы отключили все плагины и не вставили их в файлы functions.php
, header.php
или footer.php
. Попробуем разобраться, почему это происходит, и что с этим можно сделать.
1. Вызов jQuery в ядре WordPress
Скрипты jQuery загружаются автоматически в WordPress в зависимости от ситуации. В последних версиях WordPress jQuery включается по умолчанию в плагинах и темах, когда они требуют его. Таким образом, даже если вы отключили все активные плагины, jQuery может быть вызван через вашу тему или использоваться в административных функциях WordPress.
2. Причины вызова jQuery
Несколько факторов могут вызвать загрузку jQuery:
- Процесс в вашей теме: Ваша тема может явно или неявно требовать jQuery. Проверить это можно, просматривая код темы, чтобы найти любые функции, использующие jQuery.
- Функции WordPress: Как вы правильно заметили, WordPress может загружать jQuery по необходимости, если другие функции или компоненты требуют этого.
- Изменение порядка загрузки: Если jQuery необходимо загружать до других скриптов, это может вызывать его загрузку в шапке страницы.
3. Как обнаружить источник вызова
Чтобы точно узнать, откуда вызываются скрипты jQuery, вы можете воспользоваться следующими методами:
- Инструменты разработчика: Воспользуйтесь инструментами разработчика в вашем браузере (обычно F12), откройте вкладку "Сеть" (Network) и посмотрите, какие скрипты загружаются. Это позволит вам увидеть, какие функции вызывают загрузку jQuery.
- Поиск в коде: Пройдитесь по всем файлам вашей темы и посмотрите, нет ли вызовов jQuery. Не забудьте просмотреть не только файлы дочерней темы, но и родительскую.
- Логирование: Вы можете добавить простое логирование в ваш файл
functions.php
, чтобы отследить, когда и где подключаются скрипты.
4. Установка jQuery в подвал или отложенная загрузка
Если вы хотите перенести jQuery в подвал или сделать его отложенной загрузки, вы можете использовать следующий код в файле functions.php
вашей темы:
/**
* Переместить скрипты в подвал
*/
function enqueue_scripts_in_footer() {
wp_deregister_script('jquery');
wp_register_script('jquery', '/wp-includes/js/jquery/jquery.js', array(), false, true);
wp_enqueue_script('jquery');
wp_deregister_script('jquery-migrate');
wp_register_script('jquery-migrate', '/wp-includes/js/jquery/jquery-migrate.min.js', array('jquery'), false, true);
wp_enqueue_script('jquery-migrate');
}
add_action('wp_enqueue_scripts', 'enqueue_scripts_in_footer');
Этот код отменяет регистрацию jQuery и перемещает его загрузку в подвал страницы, что положительно скажется на производительности.
Заключение
Понимание того, как jQuery вызывается и управляется в WordPress, поможет вам эффективно контролировать загрузку скриптов. Важно следить за тем, чтобы в вашей теме не было лишних вызовов jQuery, которые могут замедлить работу сайта. Надеюсь, эта информация была вам полезна. Если у вас останутся дополнительные вопросы, не стесняйтесь спрашивать!