¿Cómo elimino el archivo CSS de un tema principal?

33

Mi tema principal (Starkers) agrega un archivo CSS que estoy tratando de eliminar (quiero usar @import en su lugar para poder anular estilos más fácilmente). Starkers tiene lo siguiente en sus functions.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' );
}

He intentado lo siguiente en el child functions.php, pero las etiquetas de enlace y script todavía se muestran en la sección de cabecera.

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

He verificado dos veces para ver si están codificados en el encabezado principal y no lo están.

jmotes
fuente

Respuestas:

39

Quiero usar @import en su lugar para poder anular estilos más fácilmente

Simplemente. No lo hagas Hacer. Ese.

Simplemente salta al mismo gancho y luego desregistra / quita los estilos / scripts y agrega tus 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 );

La razón para retirar y dar de baja los scripts es simple:

Tenga en cuenta que si desea poder usar cualquiera de esos controladores ( 'screen'o 'site') después de retirarlos, también deberá cancelar el registro. Por ejemplo: wp_deregister_style( 'screen' );y wp_deregister_script( 'site' );- peterjmag

emperador
fuente
1
Quizás sea simple, pero falta el documento oficial de WP y luego codex.wordpress.org/Child_Themes . No hablan sobre la retirada y el registro de temas infantiles
gagarine
-1

Así es como eliminaría la hoja de estilo del tema principal y la reemplazaría con la hoja de estilo de un tema secundario O simplemente eliminaría la hoja de estilo del padre para que nunca se cargue.

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

Recuerde el identificador que llaman el estilo, 'pantalla'

Reemplazar el tema principal con la hoja de estilo del tema secundario

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

Eliminar la hoja de estilo del tema principal

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

Le damos al add_action () del tema secundario una prioridad de 20 (el valor predeterminado es 10) porque queremos que se ejecute DESPUÉS de que el tema principal lo haya puesto en cola. Cuanto mayor sea la prioridad, más tarde se ejecutará. 20> 10 para que la acción del tema secundario siempre se ejecute después de que el tema principal ya se haya ejecutado.

CHergott
fuente