Как удалить CSS файл родительской темы?
Моя родительская тема (Starkers) добавляет CSS файл, который я пытаюсь удалить (я хочу использовать @import вместо этого, чтобы легче переопределять стили). В файле functions.php родительской темы Starkers есть следующий код:
add_action( 'wp_enqueue_scripts', 'script_enqueuer' );
function script_enqueuer() {
wp_register_script( 'site', get_template_directory_uri().'/js/site.js', array( 'jquery' ) );
wp_enqueue_script( 'site' );
wp_register_style( 'screen', get_template_directory_uri().'/style.css', '', '', 'screen' );
wp_enqueue_style( 'screen' );
}
Я попробовал следующий код в файле functions.php дочерней темы, но теги link и script все еще появляются в секции head.
add_action('init', 'removeScripts');
function removeScripts() {
wp_dequeue_style('screen');
wp_deregister_script('site');
}
Я дважды проверил, не прописаны ли они жестко в header родительской темы, и они там не прописаны.

Я хочу использовать @import, чтобы было проще переопределять стили
Просто. Не. Делайте. Так.
Вы можете просто подключиться к тому же хуку, затем убрать/отменить регистрацию стилей/скриптов и добавить свои собственные.
function PREFIX_remove_scripts() {
wp_dequeue_style( 'screen' );
wp_deregister_style( 'screen' );
wp_dequeue_script( 'site' );
wp_deregister_script( 'site' );
// Теперь зарегистрируйте свои стили и скрипты здесь
}
add_action( 'wp_enqueue_scripts', 'PREFIX_remove_scripts', 20 );
Причина для удаления и отмены регистрации скриптов проста:
Обратите внимание, что если вы хотите иметь возможность использовать эти обработчики (
'screen'
или'site'
) после их удаления, вам также нужно отменить их регистрацию. Например:wp_deregister_style( 'screen' );
иwp_deregister_script( 'site' );
- peterjmag

Вот как можно либо удалить таблицу стилей родительской темы и заменить её на таблицу стилей дочерней темы, либо просто удалить таблицу стилей родительской темы, чтобы она никогда не загружалась.
Файл functions.php темы Starker:
add_action( 'wp_enqueue_scripts', 'script_enqueuer' );
function script_enqueuer() {
//...
wp_register_style( 'screen', get_template_directory_uri().'/style.css', '', '', 'screen' );
wp_enqueue_style( 'screen' );
}
Запомните название (handle), под которым регистрируется стиль — 'screen'
Замена таблицы стилей родительской темы на таблицу стилей дочерней темы
Файл functions.php дочерней темы Starker-Child:
function custom_starkers_styles() {
//Удаляем нужные стили родительской темы
wp_dequeue_style( 'screen');
//Заменяем их стилями дочерней темы
wp_register_style( 'screen-child', trailingslashit( get_template_directory_uri() ). 'screen.css' );
wp_enqueue_style( 'screen-child');
}
add_action( 'wp_enqueue_scripts','custom_starkers_styles', 20 );
Удаление таблицы стилей родительской темы
Файл functions.php дочерней темы Starker-Child:
function remove_starkers_styles() {
//Удаляем нужные стили родительской темы
wp_dequeue_style( 'screen');
}
add_action( 'wp_enqueue_scripts','remove_starkers_styles', 20 );
Мы устанавливаем приоритет 20 для add_action() в дочерней теме (по умолчанию 10), потому что хотим, чтобы он выполнялся ПОСЛЕ того, как родительская тема поставит стили в очередь. Чем выше приоритет, тем позже он выполнится. 20 > 10, поэтому действие дочерней темы всегда будет выполняться после того, как родительская тема уже выполнила своё действие.
