Раздражает JQMIGRATE: Migrate находится в консоли после обновления до WP 4.5

Может ли кто-нибудь объяснить, почему существует постоянное уведомление

  

JQMIGRATE: установлен Migrate, версия 1.4.0

, который указывает на load-scripts.php в моей консоли, когда я обновляю тему до WordPress 4.5 и как ее можно удалить?

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

Возможно, у меня немного ocd, но обычно, когда я проверяю сайт, мне нравится видеть ошибки и реальные уведомления, указывающие на проблему в моей консоли ...

39 голосов | спросил dingo_d 24 PMpSun, 24 Apr 2016 12:48:11 +030048Sunday 2016, 12:48:11

4 ответа


39

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

С выпуском WordPress 4.5, похоже, они обновили версию перехода jQuery из v1.2.1 - v1.4.0 - Быстрое сканирование кода показывает, что в файлах v1.4.0 загружается скрипт независимо от того, установлена ​​ли опция migrateMute и как в несжатых, так и в минитипированных версиях.

Единственный способ удалить уведомление - обеспечить, чтобы все ваши плагины /код темы не опирались на какие-либо старые функции jQuery, а затем удаляли скрипт миграции. Существует плагин , чтобы сделать это, но это довольно простой метод, который можно просто поместить в файл функций вашей темы или аналогичный:

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

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

ответил Andy 24 PMpSun, 24 Apr 2016 14:41:33 +030041Sunday 2016, 14:41:33
8

Вы можете изменить текст сообщения журнала на пустую строку в jquery-migrate.min.js , но это не будет сохранено при обновлении ядра.

Альтернативой является добавление функции пересылки /фильтрации функции console.log непосредственно перед загрузкой сценария миграции и указание ей игнорировать сообщения журнала, содержащие « Migrate is installed ». Выполнение этого способа также сохранит другие предупреждения о переносе:

  //скрипт глушителя
function jquery_migrate_silencer () {
    //создание копии функции
    $ silencer = '<script> window.console.logger = window.console.log; «;
    //изменение исходной функции для фильтрации и использования функции copy
    $ silencer. = 'window.console.log = function (tolog) {';
    //ошибка, если пустая, чтобы предотвратить ошибку
    $ silencer. = 'if (tolog == null) {return;}';
    //фильтровать сообщения, содержащие строку
    $ silencer. = 'if (tolog.indexOf («Миграция установлена») == -1) {';
    $ silencer. = 'console.logger (tolog);}';
    $ silencer. = '} </script>';
    return $ silencer;
}

//для внешнего интерфейса используйте фильтр script_loader_tag
add_filter ('script_loader_tag', 'jquery_migrate_load_silencer', 10, 2);
функция jquery_migrate_load_silencer ($ tag, $ handle) {
    if ($ handle == 'jquery-migrate') {
        $ silencer = jquery_migrate_silencer ();
        //добавление в jquery migrate loading
        $ tag = $ silencer. $ tag;
    }
    return $ tag;
}

//для администратора, подключитесь к admin_print_scripts
add_action ( 'admin_print_scripts', 'jquery_migrate_echo_silencer');
function jquery_migrate_echo_silencer () {echo jquery_migrate_silencer ();}
 

Результат - одна строка HTML-скрипта, добавленная как к интерфейсу, так и к бэкэнд, который обеспечивает желаемый эффект (предотвращает установленное сообщение.)

ответил majick 25 PMpMon, 25 Apr 2016 12:05:25 +030005Monday 2016, 12:05:25
7

Просто немного теста здесь.

Я заглянул в jquery-migrate.js и заметил эту часть

  //Установите значение true, чтобы предотвратить вывод консоли; migrateWarnings все еще поддерживается
//jQuery.migrateMute = false;
 

, поэтому я проверил следующее с помощью wp_add_inline_script () , введенный в версии 4.5:

  add_action ('wp_enqueue_scripts', function ()
{
    wp_add_inline_script (
        'jquery-migrate', 'jQuery.migrateMute = true;',
        'до'
    );
});
 

Это изменится:

  

JQMIGRATE: Migrate устанавливается с помощью   logging active, версия 1.4.0

в

  

JQMIGRATE: установлен Migrate, версия 1.4.0

Таким образом, это фактически не предотвращает вывод всех консолей, как эта часть в jquery-migrate.js :

  //Показывать сообщение на консоли, чтобы разработчики знали, что мы активны
if (window.console & amp; & amp; window.console.log) {
    window.console.log ("JQMIGRATE: Миграция установлена" +
        (jQuery.migrateMute? "": "с активным протоколированием") +
        ", версия" + jQuery.migrateVersion);
}
 
ответил birgire 25 PMpMon, 25 Apr 2016 12:42:26 +030042Monday 2016, 12:42:26
-2

Как упоминалось ранее Andy WordPress использует сценарий миграции jQuery для обеспечения обратной совместимости , поэтому по умолчанию он автоматически загружается.

Вот безопасный способ удалить модуль JQuery Migrate и, таким образом, избавиться от раздражающего уведомления JQMIGRATE, ускоряя загрузку вашей страницы на стороне клиента. Просто скопируйте /вставьте этот код в свой файл functions.php , и все будет готово:

  & л;? PHP
/**
 * Отключить jQuery Миграция в WordPress.
 *
 * @author Guy Dumais.
 * @link https://en.guydumais.digital/disable-jquery-migrate-in-wordpress/
 * /
add_filter ('wp_default_scripts', $ af = статическая функция (& amp; $ scripts) {
    if (! is_admin ()) {
        $ scripts-> remove ('jquery');
        $ scripts-> add ('jquery', false, array ('jquery-core'), '1.12.4');
    }
}, PHP_INT_MAX);
unset ($ af);
 


Подробнее

Чтобы получить более подробную информацию о причине использования статической функции, прочитайте мою статью здесь:
â-ºâ-º https://en.guydumais.digital/disable- JQuery-мигрирует-в-WordPress /

ответил Guy Dumais Digital 26 PMpThu, 26 Apr 2018 18:31:47 +030031Thursday 2018, 18:31:47

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132