thiagobelem
  • 0
Новичок

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

  • 0

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

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

// 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.

Share
  1. Начиная с версии 3.6 WordPress активно отговаривает вообще отменять регистрацию «критических» скриптов в админке.

    Для поставленной области (загрузка более нового jQuery в определенной части администратора) было бы разумнее загрузить пользовательскую копию 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, я не знал об этом 🙂

    • 0
  2. Если он работает для ваших страниц с пользовательскими типами сообщений, и это все, что вам нужно, вы можете просто добавить условный тег, проверяющий страницу:

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

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

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

    • 0

Оставить ответ

You must login to add an answer.