wp_deregister_script() — отменяет регистрацию файла JavaScript

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

wp_deregister_script( $handle );
$handle
(строка) рабочее название (идентификатор) скрипта, указанное при регистрации через функцию wp_register_script()

Функция ничего не возвращает.

Пример

Сейчас мы перерегистрируем стандартный файл jQuery в WordPress на свежую версию jQuery, взятую из Google CDN.

// сначала отменяем регистрацию старого файла
wp_deregister_script( 'jquery' );
 
// регистрируем новый
wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' );

Миша

В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Комментарии 12

  • VRS 13 сентября 2014 #

    Привет, Миша!

    Можешь ли подсказать по поводу этого хука.
    Я поставила такой код для подгрузки jquery с гугла (без этого не работает слайдшоу и раскрытие меню).

     if(wp_script_is('jquery','registered')) { 
        $ver = $wp_scripts->registered['jquery']->ver;
        wp_deregister_script('jquery'); 
        wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"), false, $ver); 
        if(!is_admin()) wp_enqueue_script('jquery'); 
     
        $ver = $wp_scripts->registered['swfobject']->ver;
        wp_deregister_script('swfobject'); 
        wp_register_script('swfobject', ("http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"), false, $ver); 
        if(!is_admin()) wp_enqueue_script('swfobject');
     
    }

    но плагин перенаправлений фиксирует 404 ошибку - в любой url добавляется /undefined?тут_цифры

    Как еще можно отключить подгрузку встроенного квери?

    • Миша 14 сентября 2014 #

      Привет!
      Да к черту версию, укажи этот параметр null. То есть откинь последние два параметра функции.

      Во-вторых, условия !is_admin() не нужно, добавь весь этот код в хук wp_enqueue_scripts.

      Короче вот:

      function true_enqueue_scripts(){
      	wp_deregister_script('jquery'); 
      	wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js');
      	wp_enqueue_script('jquery'); 
      	wp_deregister_script('swfobject'); 
      	wp_register_script('swfobject', 'http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js');
      	wp_enqueue_script('swfobject');
      }
      add_action('wp_enqueue_scripts','true_enqueue_scripts');

      Если ничего не изменится, пиши, разберемся.

  • VRS 20 сентября 2014 #

    Не, не изменилось.. Я потом попробовала вставить код напрямую в хедер. Та же проблема. Оказалось, что это особенность самого гугловского жквери. Другие библиотеки, с того же jquery.com, не добавляют такого в урл, но и не работают на раскрытие меню.
    Пока нашла выход из положения дописав в хтаккесс.
    RedirectMatch 301 (.*)\/undefined$ $1/

    Подбирать другой скрипт и загружать его со своего хостинга?

    • Миша 20 сентября 2014 #

      Ну просто посмотри тогда, какая версия jquery подключается из гугла, скачай и залей её к себе на хостинг.

  • VRS 20 сентября 2014 #

    Так тоже пробовала. Видимо гугл что-то добавил в скрипты.

  • VRS 5 марта 2015 #

    В итоге выяснилось, что проблема связана со скриптом слайдера Camera.
    Обернула

    if($("div").is("#slider1")) {
    	   ....
    }

    и undefined исчезло из url-а.
    Сейчас использую твой код. Спасибо!

    • Миша 5 марта 2015 #

      Ок, отлично! Рад, что всё работает.

  • Сергей 20 мая 2015 #

    Михаил, пожалуйста подскажи, почему не работает wp_deregister_script?
    Делаю так:

    function add_scripts() {
      $dir = get_template_directory_uri();
     
      wp_deregister_script('jquery');
      wp_register_script('jquery', $dir . '/js/jquery-1.11.1.js', false, null);
      wp_enqueue_script( 'jquery' );
     
      wp_enqueue_script( 'my-script', $dir . '/js/script.js', array(), null );
      wp_enqueue_script( 'jcarousellite', $dir . '/js/jquery.jcarousellite.min.js', array(), null );
    }
    add_action( 'wp_enqueue_scripts', 'add_scripts' );

    Но на страницу подгружается всё равно родной!

    <script type='text/javascript' src='http://site.ru/wp-includes/js/jquery/jquery.js?ver=1.11.2'></script>
    <script type='text/javascript' src='http://site.ru/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script>

    Заранее спасибо за ответ.

    • Миша 20 мая 2015 #
      1. Можете попробовать поменять приоритет хука.
      2. Можете попробовать wp_dequeue_script().
      • Сергей 21 мая 2015 #

        Спасибо, но я это пробовал, не получается.. Как только появляется строка

        wp_register_script('jquery', $dir . '/js/jquery-1.11.1.js', false, null);

        на страницу инклудится родной jquery.

        • Миша 22 мая 2015 #

          Может тогда так?

          wp_enqueue_script('jquery', $dir . '/js/jquery-1.11.1.js', false, null);
          • Сергей 22 мая 2015 #

            Так тоже пробовал, тот же результат. Я не победил этот момент, а нужно это было для плагина, который инклудится в массив jquery

            wp_enqueue_script( 'plugin', 'dir_plugin/js_file', array('jquery'), 'version' )

            . Пришлось вручную редактировать файл плагина, а после обновления всё сотрется.

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, в случае несоблюдения этого условия в 99% случаях ваш коммент будет удалён, а автор заблокирован. Печалька.