Как отключить jQuery.migrate вручную
WordPress автоматически загружает jQuery.migrate:
Как я могу отключить его без использования плагинов? Я не нашел кода в functions.php с enqueue
.
Он загружается из /wp-includes
. Как его отключить?

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, который делает это за вас.

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);

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