Como desenfileirar o arquivo CSS de um tema pai?

33

Meu tema principal (Starkers) adiciona um arquivo CSS que estou tentando remover (quero usar @import para que eu possa substituir estilos mais facilmente). Starkers tem o seguinte em suas funções.php:

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

Eu tentei o seguinte no filho functions.php, mas as tags link e script ainda aparecem na seção head.

add_action('init', 'removeScripts');
function removeScripts() {
    wp_dequeue_style('screen');
    wp_deregister_script('site');
}

Eu verifiquei duas vezes para ver se eles são codificados no cabeçalho pai e não são.

jmotes
fonte

Respostas:

39

Quero usar @import para que eu possa substituir estilos mais facilmente

Simplesmente. Não. Faz. Aquele.

Você simplesmente salta para o mesmo gancho e, em seguida, cancela o registro / desenfileira os estilos / scripts e lança seus estilos personalizados.

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

A razão para desenfileirar e cancelar o registro dos scripts é simples:

Observe que, se você quiser usar um desses identificadores ( 'screen'ou 'site') depois de desenfileirá-los, será necessário cancelar o registro deles também. Por exemplo: wp_deregister_style( 'screen' );e wp_deregister_script( 'site' );- peterjmag

kaiser
fonte
1
Talvez seja simples, mas o documento oficial do WP está ausente e, em seguida, codex.wordpress.org/Child_Themes . Eles não falam sobre desenfileiramento e cancelamento de registro para temas infantis
gagarine
-1

A seguir, é possível remover a folha de estilo do tema pai e substituí-la pela folha de estilo de um tema filho OU apenas remover a folha de estilo do pai.

Funções do tema Starker.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' );
}

Lembre-se da alça que eles chamam de estilo, 'tela'

Substituindo o tema pai pela folha de estilo do tema filho

Funções do tema 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 );

Remover a folha de estilo do tema pai

Funções do tema Starker-Child.php:

function remove_starkers_styles() {

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

}

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

Damos ao add_action () do tema filho uma prioridade 20 (o padrão é 10) porque queremos que ele seja executado APÓS o tema pai o enfileirar. Quanto maior a prioridade, mais tarde será executada. 20> 10 para que a ação do tema filho sempre seja executada após a execução do tema pai.

CHergott
fonte