¿Cómo eliminar el archivo CSS de un tema padre?
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.

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' );
ywp_deregister_script( 'site' );
- peterjmag

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.
