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

33

Моя родительская тема (Starkers) добавляет файл CSS, который я пытаюсь удалить (вместо этого я хочу использовать @import, чтобы легче переопределять стили). 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');
}

Я дважды проверил, не жестко ли они закодированы в родительском заголовке.

jmotes
источник

Ответы:

39

Вместо этого я хочу использовать @import, чтобы легче переопределять стили

Просто. Не. Делать. Что.

Вы просто запрыгиваете в тот же хук, а затем отменяете регистрацию / удаляете стили / скрипты и добавляете свои собственные.

function PREFIX_remove_scripts() {
    wp_dequeue_style( 'screen' );
    wp_deregister_style( 'screen' );

    wp_dequeue_script( 'site' );
    wp_deregister_script( 'site' );

    // Now register your styles and scripts here
}
add_action( 'wp_enqueue_scripts', 'PREFIX_remove_scripts', 20 );

Причина отмены и отмены регистрации скриптов проста:

Обратите внимание, что если вы хотите иметь возможность использовать любой из этих дескрипторов ( 'screen'или 'site') после удаления их из очереди, вам также необходимо отменить их регистрацию. Например: wp_deregister_style( 'screen' );и wp_deregister_script( 'site' );- peterjmag

кайзер
источник
1
Возможно, это просто, но в официальном документе WP отсутствует codex.wordpress.org/Child_Themes . Они не говорят об исключении из очереди и отмене регистрации по детской тематике
gagarine
-1

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

Функции темы Старкера.php:

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

Помните ручку, которую они называют стилем, «экран»

Замена родительской темы таблицей стилей дочерней темы

Функции темы Starker-Child.php:

function custom_starkers_styles() {

    //Remove desired parent styles
    wp_dequeue_style( 'screen');

    //Replace with custom child styles
    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 );

Удалить таблицу стилей родительской темы

Функции темы Starker-Child.php:

function remove_starkers_styles() {

    //Remove desired parent styles
    wp_dequeue_style( 'screen');

}

add_action( 'wp_enqueue_scripts','remove_starkers_styles', 20 );

Мы присваиваем дочерней теме add_action () приоритет 20 (по умолчанию 10), потому что мы хотим, чтобы она запускалась ПОСЛЕ того, как родительская тема поставила ее в очередь. Чем выше приоритет, тем позже он будет работать. 20> 10, поэтому действие дочерней темы всегда будет выполняться после того, как родительская тема уже выполнена.

CHergott
источник