Как удалить jquery с фронта моего WordPress?
Мой сайт Wordpress немного тяжелый для загрузки. В интерфейсе его включение jQuery излишне. В моем firebug это выглядит так:
jquery.js?ver=1.3.2
и
jquery.form.js?ver=2.02m
Мне не нужны эти данные для меня.
Я рад за то, что они останутся в wp-admin, но я бы хотел, чтобы они не загружали интерфейс.
Я нашел файл, который, по моему мнению, загружает их в wp-includes/script-loader.php
, но я не уверен, что нужно раскомментировать или что делать, чтобы полностью удалить его для фронта.
Есть ли способ сделать это, удалив jquery, не разрушая задний конец?
Ответы
Ответ 1
JQuery может быть добавлен вашей темой. Если ваша тема добавляет его правильно, она должна использовать функцию wp_enqueue_script()
. Чтобы удалить JQuery, просто используйте функцию wp_deregister_script()
.
wp_deregister_script('jquery');
Удаление JQuery для всего сайта может привести к непредвиденным последствиям для вашего раздела администратора. Чтобы избежать удаления JQuery на страницах администратора, используйте этот код:
if ( !is_admin() ) wp_deregister_script('jquery');
Теперь только страницы, которые не являются страницами администратора, будут запускать функцию wp_deregister_script()
.
Добавьте этот код в файл functions.php в свой каталог тем.
Ответ 2
Все остальные решения устарели, начиная с wordpress 3.6
add_filter( 'wp_default_scripts', 'change_default_jquery' );
function change_default_jquery( &$scripts){
if(!is_admin()){
$scripts->remove( 'jquery');
$scripts->add( 'jquery', false, array( 'jquery-core' ), '1.10.2' );
}
}
Ответ 3
Правильный метод полного удаления стиля или script - удалить его и, чтобы отменить его. Следует также отметить, что скрипты переднего конца обрабатываются с помощью wp_enqueue_scripts
, в то время как обратные скрипты обрабатываются через admin_enqueue_scripts
.
Таким образом, имея в виду, вы можете сделать следующее
add_filter( 'wp_enqueue_scripts', 'change_default_jquery', PHP_INT_MAX );
function change_default_jquery( ){
wp_dequeue_script( 'jquery');
wp_deregister_script( 'jquery');
}
РЕДАКТИРОВАТЬ 1
Это было полностью протестировано в Wordpress версии 4.0 и работает как ожидалось.
РЕДАКТИРОВАТЬ 2
В качестве доказательства концепции вставьте следующий код в свои functions.php. Это напечатает сообщение об успешном завершении или сбое в заголовке вашего сайта, задней части и передней панели.
add_action( 'wp_head', 'check_jquery' );
add_action( 'admin_head', 'check_jquery' );
function check_jquery() {
global $wp_scripts;
foreach ( $wp_scripts->registered as $wp_script ) {
$handles[] = $wp_script->handle;
}
if( in_array( 'jquery', $handles ) ) {
echo 'jquery has been loaded';
}else{
echo 'jquery has been removed';
}
}
Ответ 4
Посмотрите на свои файлы тем.
сор-содержание/темы/header.php
может содержать файлы .js.
Ответ 5
Wordpress добавляет этот вызов jQuery через тег шаблона с именем <?php wp_head(); ?>
, который появляется в большинстве тем, и необходим для работы некоторых плагинов.
Это может раздражать не только из-за загрузки, но и потому, что он может убить ранее загруженный jQuery и может даже помешать некоторым плагинам, которые также пытаются загрузить jQuery.
Быстрое исправление открывает файл header.php в вашем каталоге тем и добавляет:
<?php wp_deregister_script('jquery'); ?>
прямо перед
<?php wp_head(); ?>
Или просто объедините их оба в:
<?php wp_deregister_script('jquery'); wp_head(); ?>
Более техническое объяснение можно найти здесь
Ответ 6
jQuery.js составляет всего 15 КБ, если вы используете минитипированную версию, и они будут полностью отсутствовать, если вы используете тему, которая этого не требует.
Вероятно, вам стоит искать легкую тему без jQuery, а не взломать ее, а затем увидеть разрыв темы в нескольких местах, потому что они ищут эти js файлы.
Ответ 7
Посмотрите на источник вашей отображаемой страницы; Wordpress часто включает jQuery по умолчанию, когда <?php wp_head(); ?>
вызывается в header.php, поэтому вы можете видеть jQuery, включенную на ваш сайт.
Если вы удалите <?php wp_head(); ?>
в header.php, вы можете потерять другие функции плагина, так как многие плагины "зацепились" за Wordpress в этой точке.
Но включение jQuery не является чем-то большим. Он маленький, и Wordpress зависит от него для некоторых вещей.
Ответ 8
Я смог сэкономить 2,2 секунды с моей скорости загрузки страницы "События", дезарегистрируя jQuery. jQuery приятно иметь, но, на мой взгляд, скорость страницы гораздо важнее.
У вас никогда не будет пользователя зависать более 5 секунд, поэтому, если jQuery вызывает проблемы с производительностью, я скажу, что избавляюсь.
Ответ 9
function my_init() {
if (!is_admin()) {
wp_deregister_script('jquery');
wp_register_script('jquery', false);
}
}
add_action('init', 'my_init');
Правильно - удаляет jQuery js. Код из других ответов удаляет все js (даже js, которые добавляются ваши установленные плагины)
Протестировано на 4.3.1