Как отключить jQuery.migrate вручную

21 янв. 2018 г., 12:44:38
Просмотры: 15.3K
Голосов: 7

WordPress автоматически загружает jQuery.migrate:

Как я могу отключить его без использования плагинов? Я не нашел кода в functions.php с enqueue.

Он загружается из /wp-includes. Как его отключить?

php
3
Комментарии

Очень плохая идея. Ядру WordPress необходим jQuery.

Frank P. Walentynowicz Frank P. Walentynowicz
21 янв. 2018 г. 12:48:13

На какой странице вы хотите отключить jQuery?

mmm mmm
21 янв. 2018 г. 12:49:29

@FrankP.Walentynowicz jQuery Migrate — это не весь jQuery. Это скрипт для миграции, который в большинстве случаев не требуется.

swissspidy swissspidy
21 янв. 2018 г. 16:36:59
Все ответы на вопрос 2
0
26

jQuery Migrate — это просто зависимость скрипта jQuery в WordPress, поэтому её можно легко удалить.

Код для этого довольно прост:

function dequeue_jquery_migrate( $scripts ) {
    if ( ! is_admin() && ! empty( $scripts->registered['jquery'] ) ) {
        $scripts->registered['jquery']->deps = array_diff(
            $scripts->registered['jquery']->deps,
            [ 'jquery-migrate' ]
        );
    }
}
add_action( 'wp_default_scripts', 'dequeue_jquery_migrate' );

Это предотвратит загрузку скрипта jQuery Migrate на фронтенде, оставив при этом сам скрипт jQuery. В админке он всё ещё загружается, чтобы ничего не сломать.

Если вы не хотите добавлять этот код в свой плагин или тему, можно использовать плагин вроде jQuery Light, который делает это за вас.

21 янв. 2018 г. 16:46:26
1

WordPress поддерживает "отмену регистрации" плагина, используя аналогичный процесс, как упомянул @swissspidy, но с меньшим количеством кода.

В любой функции, где вы подключаете свои плагины, добавьте следующую строку:

wp_deregister_script('jquery-migrate');

Это предполагает, что jQuery Migrate подключен с идентификатором jquery-migrate, который является стандартным для WordPress.

Вот пример моей функции Enqueue с действием WP:

function my_theme_enqueue_styles_and_scripts() {
    wp_enqueue_style('my-theme-styles', 'dist/styles.css');

    wp_deregister_script('jquery-migrate');
    wp_enqueue_script('my-theme-scripts', 'dist/scripts.js');

}
add_action('wp_enqueue_scripts', 'my_theme_enqueue_styles_and_scripts', 99);
17 июн. 2021 г. 18:53:39
Комментарии

Я предполагаю, что это работает нормально, но вы столкнётесь с ситуацией, когда WordPress записывает скрипты на страницу, доходит до jQuery и обнаруживает, что не может удовлетворить все его зависимости, потому что не знает, что такое jquery-migrate, который является зависимостью для jQuery. На первый взгляд это означает, что он не выведет и jquery-core, который, как я думаю, нам всё ещё нужен. Именно это и исправлял более сложный код от swissspidy.

Rup Rup
17 июн. 2021 г. 19:16:59