¿Cómo eliminar el archivo CSS de un tema padre?

18 sept 2012, 19:20:08
Vistas: 46.4K
Votos: 40

Mi tema padre (Starkers) agrega un archivo CSS que estoy tratando de eliminar (quiero usar @import en su lugar para poder sobrescribir los estilos más fácilmente). Starkers tiene lo siguiente en su 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 functions.php del tema hijo, pero las etiquetas link y script siguen apareciendo en la sección head.

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

He verificado dos veces para ver si están codificados directamente en el header del tema padre y no lo están.

0
Todas las respuestas a la pregunta 2
0
48

Quiero usar @import para poder sobrescribir los estilos más fácilmente

Sencillamente. No. Lo. Hagas.

Simplemente utiliza el mismo hook y luego desregistra/elimina 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' );

    // Ahora registra aquí tus estilos y scripts personalizados
}
add_action( 'wp_enqueue_scripts', 'PREFIX_remove_scripts', 20 );

La razón para eliminar y desregistrar los scripts es simple:

Nota que si quieres poder usar cualquiera de esos identificadores ('screen' o 'site') después de eliminarlos, también necesitarás desregistrarlos. Por ejemplo: wp_deregister_style( 'screen' ); y wp_deregister_script( 'site' ); - peterjmag

18 sept 2012 19:37:23
0

Aquí te mostramos cómo puedes eliminar la hoja de estilos del tema padre y reemplazarla con la del tema hijo O simplemente eliminar la hoja de estilos del tema padre para que nunca se cargue.

functions.php del tema 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' );
}

Recuerda el identificador ('handle') que usan para registrar el estilo: 'screen'

Reemplazar la hoja de estilos del tema padre con la del tema hijo

functions.php del tema Starker-Child:

function​ ​custom_starkers_styles() {

    //Eliminar los estilos deseados del tema padre
    wp_dequeue_style( 'screen');

    //Reemplazar con estilos personalizados del tema hijo
    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 estilos del tema padre

functions.php del tema Starker-Child:

function​ ​remove_starkers_styles() {

    //Eliminar los estilos deseados del tema padre
    wp_dequeue_style( 'screen');

}

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

Le damos al add_action() del tema hijo una prioridad de 20 (el valor por defecto es 10) porque queremos que se ejecute DESPUÉS de que el tema padre haya encolado sus estilos. Mientras mayor sea la prioridad, más tarde se ejecutará. 20 > 10, por lo que la acción del tema hijo siempre se ejecutará después de que el tema padre ya haya terminado.

7 mar 2016 23:52:56