Почему WordPress использует устаревшую версию jQuery v1.12.4?
Проверяя исходный код, я заметил, что WordPress использует jQuery v1.12.4. Почему WordPress использует эту устаревшую версию jQuery?

Многие темы и плагины используют jQuery, загружаемый ядром WordPress. Каждый раз при обновлении jQuery существует риск, что старые темы и плагины перестанут работать (поскольку многие из них всё ещё используются, но больше не обновляются). Именно поэтому в исходном коде можно увидеть jquery-migrate.js
. Это скрипт, который перехватывает устаревшие функции, используемые плагинами и темами, и обеспечивает их работоспособность в новых версиях jQuery.
Переход на семейство jQuery 3.x
может привести к поломке многих плагинов и тем, потому что не существует миграционного скрипта для всех устаревших функций. Вот почему новые версии семейства 1.x
продолжали разрабатываться, даже когда уже существовали версии 2.x
и 3.x
. После версий 1.12
и 2.2
новых релизов 1.x
и 2.x
не будет, за исключением исправлений (в том числе для безопасности). Хотя jQuery 1.12
пока не устарел, в ближайшем будущем это произойдёт.
Таким образом, WordPress оказывается в сложной ситуации. Если система не перейдёт на более новую версию jQuery, она не сможет поддерживать новые возможности. Однако, если обновление произойдёт, старые сайты перестанут работать. Наиболее вероятный сценарий — WordPress подождёт несколько лет, пока старые темы и плагины естественным образом выйдут из употребления, а затем совершит переход на семейство 3.x
.
Уточнение
Вышесказанное может навести на мысль, что миграция с версий 1.x
на 3.x
невозможна. Это не так. Процесс просто немного сложнее. Хитрость в том, чтобы сначала обновиться до 1.12
, протестировать результат с помощью старого миграционного скрипта, а затем добавить скрипт миграции 3.0
, который работает с 1.12
. Подробные инструкции доступны здесь.
Обновление безопасности
Разработчики могли заметить, что Google Dev Tools / Lighthouse помечает сайты на WordPress как уязвимые из-за использования старой версии jQuery — или так кажется. На самом деле, Lighthouse просто проверяет, есть ли у этой библиотеки уязвимости, упомянутые в Snyk Vulnerabilities Database. При детальной проверке окажется, что версия 1.12.4 не имеет уязвимостей. Учитывая широкое распространение 1.12.4, можно быть уверенным, что любые серьёзные проблемы с безопасностью будут быстро устранены.
Обновление миграции
Переход на jQuery 3.x был реализован в WordPress 5.5 и завершён в версии 5.7. Для тех, кому всё ещё нужна старая версия, существует плагин, позволяющий понизить версию jQuery.

Просто добавлю немного дополнительной информации - и jQuery 1.x, и 2.x активно обновлялись до мая этого года, разница между ними заключалась лишь в том, что 1.x поддерживал совместимость с IE8, а 2.x удалил патчи и исправления для этих проблемных браузеров. Версия 3.x - это новая версия, которая делает ещё один шаг вперёд, изменяя различные интерфейсы для совместимости с "официальными" интерфейсами HTML5/JavaScript (то есть там, где jQuery делала что-то по-своему, эти вещи стали стандартом уже после того, как в jQuery появились собственные реализации аналогичного функционала).

- Он не устарел
- Переход на версии 2.x или 3.x пока преждевременен, так как многие до сих пор используют IE8, который поддерживается только в версии 1.x

@LightnessRacesinOrbit Согласен, но по моему опыту этот вопрос очень точно отражает средний уровень квалификации WP-разработчика.

Обновление на январь 2018: Идея о том, что эта версия устарела, несмотря на то что она по-прежнему включена в WordPress по умолчанию, больше не является "бессмыслицей". В версии 1.12.4 были обнаружены уязвимости XSS, и ветка 1.x больше не получает обновлений. Рекомендуемое решение - обновление до jQuery 3.x https://snyk.io/test/npm/jquery/1.12.4?severity=high&severity=medium&severity=low

Также при использовании Lighthouse Google сообщает, что версия 1.12.4 содержит известные уязвимости безопасности, поэтому её не стоит использовать.

Поддержка IE8, которую даже Microsoft больше не обеспечивает, на данный момент безответственна. Это заставляет людей использовать устаревший браузер с проблемами безопасности. Если кто-то использует IE8, ему нужно перестать это делать.

Этот ответ и некоторые комментарии устарели. JQuery 1.x и 2.x больше не получают обновлений, согласно информации на главной странице jquery.com

@DavidA.French Я полностью поддерживаю это предложение. Разработчикам нужно ПРЕКРАТИТЬ подстраиваться под пользователей, которые отказываются обновляться. Было время, когда все стремились к полной совместимости со всеми возможными браузерами, и эти плохие привычки до сих пор сохраняются. Может быть, когда интернет перестанет работать для них, эти люди обновятся до современного браузера. На данный момент, если вы не используете последнюю версию одного из основных браузеров (IE и AOL вообще не в счет), интернет не должен под вас подстраиваться. Серьезно, IE8? Вы составляете меньше 1% интернета, [голосом из AOL] "До свидания"

Чтобы быть еще более точным.
Ветка 1.x включает поддержку IE 6/7/8, а ветка 2.x — нет.
https://blog.jquery.com/2016/05/20/jquery-1-12-4-and-2-2-4-released/
