Использование функции wp_deregister_script() в WordPress

WP_DEREGISTER_SCRIPT() │ WP 2.1.0

Функция wp_deregister_script() позволяет удалить зарегистрированный скрипт в WordPress. Обратите внимание, что существуют защитные механизмы, предотврашающие удаление критически важных скриптов, таких как основной jQuery.

Возвращаемое значение

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

Использование

wp_deregister_script( $handle );
  • $handle (строка) (обязательный) — название скрипта, который вы хотите удалить.

Примеры

1. Регистрация вашего скрипта jQuery

Предположим, мы хотим изменить ссылку, с которой будет загружаться скрипт jQuery. Мы будем использовать Google CDN, ��о есть скрипт будет загружаться из репозитория Google:

// Регистрация jQuery
add_action( 'wp_enqueue_scripts', 'my_scripts_method' );

function my_scripts_method() {
    // Отменяем зарегистрированный jQuery
    // Вместо "jquery-core" можно написать "jquery", тогда jQuery Migrate тоже будет отменен
    wp_deregister_script( 'jquery-core' );
    wp_register_script( 'jquery-core', '//ajax.googleapis.com/ajax/libs/jquery/3/jquery.min.js');

    wp_enqueue_script( 'jquery' );
}

2. Удаление скрипта jQuery

Если вам нужно удалить базовую регистрацию скрипта jQuery, используйте следующий код в файле functions.php вашей темы:

wp_deregister_script( 'jquery' );

3. Удаление скрипта не приведет к его немедленному отключению

Вы можете использовать wp_deregister_script( 'script-handle' );, а затем wp_register_script(), если хотите изменить URL уже добавленного скрипта без изменения порядка его загрузки. Это полезно, если родительская тема неправильно указала зависимости.

Заметки

  • Важно помнить, что нельзя случайно отменять регистрацию критически важных скриптов в админке. Если вы используете правильный хук, увидите минимальное сообщение об ошибке.
  • Для проверки текущего контекста использования:
global $pagenow;

Изменения

Функция была введена в версии 2.1.0.

Код функции

function wp_deregister_script( $handle ) {
    global $pagenow;

    _wp_scripts_maybe_doing_it_wrong( __FUNCTION__, $handle );

    /**
     * Не допускайте случайной или небрежной отмены регистрации критически важных скриптов в админке.
     * Показать минимальное сожаление, если используется правильный хук.
     */
    $current_filter = current_filter();
    if ( ( is_admin() && 'admin_enqueue_scripts' !== $current_filter ) ||
        ( 'wp-login.php' === $pagenow && 'login_enqueue_scripts' !== $current_filter )
    ) {
        $not_allowed = array(
            'jquery',
            'jquery-core',
            'jquery-migrate',
            'jquery-ui-core',
            'jquery-ui-accordion',
            'jquery-ui-autocomplete',
            'jquery-ui-button',
            'jquery-ui-datepicker',
            'jquery-ui-dialog',
            'jquery-ui-draggable',
            'jquery-ui-droppable',
            'jquery-ui-menu',
            'jquery-ui-mouse',
            'jquery-ui-position',
            'jquery-ui-progressbar',
            'jquery-ui-resizable',
            'jquery-ui-selectable',
            'jquery-ui-slider',
            'jquery-ui-sortable',
            'jquery-ui-spinner',
            'jquery-ui-tabs',
            'jquery-ui-tooltip',
            'jquery-ui-widget',
            'underscore',
            'backbone',
        );

        if ( in_array( $handle, $not_allowed, true ) ) {
            _doing_it_wrong(
                __FUNCTION__,
                sprintf(
                    __( 'Не отменяйте регистрацию скрипта %1$s в админке. Чтобы избавиться от него на фронтенде, используйте хук %2$s.' ),
                    "$handle",
                    'wp_enqueue_scripts'
                ),
                '3.6.0'
            );
            return;
        }
    }

    wp_scripts()->remove( $handle );
}

Похожие функции

  • wp_add_inline_script()
  • wp_dequeue_script()
  • wp_enqueue_media()
  • wp_enqueue_script()
  • wp_localize_script()
  • wp_register_script()
  • wp_script_add_data()
  • wp_script_is()

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

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *