Как удалить CSS файл родительской темы?

18 сент. 2012 г., 19:20:08
Просмотры: 46.4K
Голосов: 40

Моя родительская тема (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 родительской темы, и они там не прописаны.

0
Все ответы на вопрос 2
0
48

Я хочу использовать @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

18 сент. 2012 г. 19:37:23
0

Вот как можно либо удалить таблицу стилей родительской темы и заменить её на таблицу стилей дочерней темы, либо просто удалить таблицу стилей родительской темы, чтобы она никогда не загружалась.

Файл 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, поэтому действие дочерней темы всегда будет выполняться после того, как родительская тема уже выполнила своё действие.

7 мар. 2016 г. 23:52:56