Как я могу удалить JQuery с передней части моего WordPress? - PullRequest
30 голосов
/ 21 июля 2009

Мой WordPress сайт немного тяжел для загрузки. На фронтэнде, включая JQuery, без необходимости. В моем firebug это выглядит так:

jquery.js?ver=1.3.2

и

jquery.form.js?ver=2.02m

Мне не нужно, чтобы они были включены для меня.

Я рад, что они остались в wp-admin, но я бы хотел, чтобы они не загружались на внешний интерфейс.

Я нашел файл, который, как мне кажется, загружает их в wp-includes/script-loader.php, но я не уверен, что можно раскомментировать или что сделать, чтобы полностью удалить его для передней части.

Есть ли способ сделать это, удалив jquery, не разрушая серверную часть?

Ответы [ 9 ]

31 голосов
/ 22 июля 2009

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 в каталоге вашей темы.

31 голосов
/ 08 мая 2014

Все остальные решения устарели с версии 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' );
    }
}
22 голосов
/ 20 ноября 2014

Правильный метод полного удаления стиля или сценария - удалить из него и отменить его регистрацию. Следует также отметить, что сценарии переднего плана обрабатываются через хук 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';
    }
}
5 голосов
/ 19 октября 2009

Wordpress добавляет этот вызов jQuery через тег шаблона с именем <?php wp_head(); ?>, который присутствует в большинстве тем и необходим для работы некоторых плагинов.

Это может раздражать не только из-за загрузки, но и потому, что может убить ранее загруженный jQuery и даже может помешать некоторым плагинам, которые также пытаются загрузить jQuery.

Быстрое решение - открыть файл header.php в каталоге вашей темы и добавить:

<?php wp_deregister_script('jquery'); ?>

прямо перед

<?php wp_head(); ?>

Или просто объедините их в:

<?php wp_deregister_script('jquery'); wp_head(); ?>

Более техническое объяснение можно найти здесь

3 голосов
/ 21 июля 2009

Загляните в свои файлы темы.

сор-содержание / темы / header.php

может включать файлы .js.

2 голосов
/ 21 июля 2009

Загляните в источник вашей отрендеренной страницы; Wordpress часто включает jQuery по умолчанию, когда в header.php вызывается <?php wp_head(); ?>, так что вы можете увидеть jQuery, включенный в ваш сайт.

Если вы удалите <?php wp_head(); ?> в header.php, вы можете потерять другие функции плагинов, так как многие плагины «зацепятся» за Wordpress в этот момент.

Но включение jQuery не так уж важно. Он небольшой, и Wordpress зависит от некоторых вещей.

2 голосов
/ 21 июля 2009

jQuery.js - всего 15 КБ, если вы используете минимизированную версию, и они будут полностью отсутствовать, если вы используете тему, которая не требует этого.

Вам, вероятно, следует поискать легкую тему без jQuery вместо того, чтобы ее взламывать, а затем увидеть разрыв темы в нескольких местах, потому что они ищут эти файлы js.

1 голос
/ 02 ноября 2015
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

0 голосов
/ 20 февраля 2012

Мне удалось сократить время загрузки страницы «События» на 2,2 секунды, отменив регистрацию jQuery. jQuery приятно иметь, но, на мой взгляд, скорость страницы намного важнее.

Пользователь никогда не будет задерживаться более 5 секунд, поэтому, если jQuery вызывает у вас проблемы с производительностью, я говорю: избавьтесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...