Используйте последний jQuery в WordPress (интерфейс администратора)

Я хочу использовать последние версии jQuery (и jQuery UI) в моем интерфейсе администратора (редактирование определенного типа сообщений, который я создал).

Я попробовал это:

// jQuery 1.x wp_register_script('jquery1x', 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js', false, null, true); // jQuery UI 1.8.4 PTBR wp_register_script('jquery-ui-custom-pt_BR', THEME_URL . 'js/jquery.ui.datepicker-pt-BR.js', array('jquery1x'), null, true); // jQuery UI 1.8.4 wp_register_script('jquery-ui-custom', THEME_URL . 'js/jquery-ui-1.8.4.custom.min.js', array('jquery1x', 'jquery-ui-custom-pt_BR'), null, true); // jQuery UI 1.8.4 CSS wp_register_style('jquery-ui-custom-css', THEME_URL . 'css/smoothness/jquery-ui-1.8.4.custom.css'); wp_enqueue_style('jquery-ui-custom-css'); wp_enqueue_script('jquery-ui-custom'); 

И это сработало, но на других страницах администратора WP я получил некоторые ошибки jQuery, поскольку переопределения jQuery (поскольку он загружен дважды).

Если я «отменил регистрацию» jQuery и зарегистрировал его снова (используя последний), он не будет работать.

Это не первый случай, когда я столкнулся с этой проблемой … Все, что мне нужно, это использовать последнюю версию jQuery в моем админ-интерфейсе WordPress, чтобы использовать некоторые функции, такие как Datepicker и Colorpicker. Но до сих пор я не могу этого сделать, используя register_script .

Если я зарегистрирую его с именем «jquery», он не будет обновляться, поскольку в этой строке уже загружен jQuery, загруженный WordPress:

 <script type='text/javascript' src='http://website.com/wp-admin/load-scripts.php?c=1&amp;load=jquery,utils,nav-menu&amp;ver=2b05c108d9016a4caa470b8edaf40953'></script> 

И я не могу взломать этот файл load-scripts.php, чтобы изменить имя файла, так как я не хочу менять ядро ​​WordPress.

Начиная с версии 3.6 WordPress активно отвлекается от отмены регистрации «критических» сценариев в администрировании вообще.

Для заданного объема (загрузка более нового jQuery в определенной части администратора) было бы noConflict() загрузить пользовательскую копию jQuery в обычном режиме и сразу же использовать noConflict() чтобы изолировать ее в собственной переменной, которая будет использоваться в пользовательском JS-коде.


Старый и отклик

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

Вы можете отключить конкатенацию, чтобы заставить ее работать (добавьте условные обозначения по мере необходимости):

 add_action( 'admin_init', 'jquery_admin' ); function jquery_admin() { global $concatenate_scripts; $concatenate_scripts = false; wp_deregister_script( 'jquery' ); wp_register_script( 'jquery', ( 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' ), false, '1.x', true ); } 

PS большое спасибо за трюк с загрузкой последней версии от Google, я не знал об этом 🙂

Если вы работаете с вашими страницами типа персонализированного типа, и все, что вам нужно, вы можете просто установить проверочный тег для проверки страницы:

 if (is_admin() && $_GET['post_type'] == 'custom_post_type') { // jQuery replacement } 

Возможно, лучшим решением было бы взглянуть на этот плагин: http://wordpress.org/extend/plugins/use-google-libraries/, он переопределит библиотеки WordPress AJAX по умолчанию с данными в CDN Google.

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