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' );

Миша Рудрастых

Впервые познакомился с WordPress в 2009 году. С 2014 года меня можно встретить на WordCamp — официальной конфе по WordPress, иногда там выступаю. Также в настоящее время веду курсы по WordPress в Epic Skills.

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

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

  • VRS:

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

    Можешь ли подсказать по поводу этого хука.
    Я поставила такой код для подгрузки 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?тут_цифры

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

    • Миша:

      Привет!
      Да к черту версию, укажи этот параметр 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:

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

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

  • VRS:

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

  • VRS:

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

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

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

  • Сергей:

    Михаил, пожалуйста подскажи, почему не работает 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>

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

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

phpjsHTMLCSSSQLПросто код
  Комментарии закрыты.