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()
Есть также функции, связанные с добавлением стилей и шрифтов, которые могут быть полезны.