¿Por qué mi CSS del tema hijo se carga dos veces?

6 nov 2014, 17:55:40
Vistas: 22.5K
Votos: 23

Creé un tema hijo según la documentación de WP y agregué la función requerida

<?php
add_action( 'wp_enqueue_scripts', 'enqueue_child_theme_styles', PHP_INT_MAX);
function enqueue_child_theme_styles() {
    // Cargar el estilo del tema padre
    wp_enqueue_style( 'parent-style', get_template_directory_uri().'/style.css' );
    // Cargar el estilo del tema hijo
    wp_enqueue_style( 'child-style', get_stylesheet_uri(), array('parent-style')  );
}

De alguna manera termino con 2 referencias a mi hoja de estilos del tema hijo:

<link rel='stylesheet' id='twentythirteen-style-css'  href='http://DOMAIN.COM/wp-content/themes/twentythirteen-child/style.css?ver=2013-07-18' type='text/css' media='all' />

<link rel='stylesheet' id='child-style-css'  href='http://DOMAIN.COM/wp-content/themes/twentythirteen-child/style.css?ver=4.0' type='text/css' media='all' />

¿Por qué sucede esto?

1
Comentarios

¿Puedes publicar la información del encabezado del archivo style.css en el tema hijo?

cybmeta cybmeta
6 nov 2014 18:24:08
Todas las respuestas a la pregunta 1
5
20

Esta publicación está enlazada desde esta publicación que ahora he actualizado con los cambios de esta entrada

Gracias por plantear este problema. He probado rápidamente el escenario y el estilo del tema hijo en realidad se carga dos veces.

Cuando actualicé el codex hace un tiempo, me aseguré de que el estilo del tema hijo se cargara después del estilo del tema padre, sin tener en cuenta que esto ya sucede por defecto y el código proporcionado en realidad cargaría la hoja de estilos del tema hijo dos veces.

Esto se puede solucionar fácilmente eliminando el $priority de la función y eliminando la parte de encolado para el tema hijo. He vuelto a probar todo y funciona correctamente. Sería bueno que un par de personas puedan corroborar esto.

Mientras tanto, actualizaré el codex y enlazaré a esta publicación.

Aquí está el código funcional:

add_action( 'wp_enqueue_scripts', 'enqueue_parent_theme_style');
function enqueue_parent_theme_style() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri().'/style.css' );
}

EDITADO

Para aquellos a quienes esta publicación no les funcione, por favor revisen esta entrada. Necesitarán ver cómo el tema padre está agregando los estilos. El código en esta pregunta asume estrictamente que los estilos en el tema padre se cargan de la manera correcta en que deberían hacerlo. Si no es así, revisen las alternativas en la respuesta enlazada y prueben esas opciones.

6 nov 2014 18:35:06
Comentarios

Probaré. Parece posible que a WP no le importe si la hoja de estilos se carga dos veces o que hay alguna razón que estamos pasando por alto.

mmcglynn mmcglynn
6 nov 2014 18:50:49

Como está relacionado con el tema, encontré un par de problemas al usar este método, detallados aquí.

dMcClintock dMcClintock
9 nov 2014 17:22:47

La hoja de estilos no se cargará dos veces si usas el mismo 'id'. Pero esto crea otro problema: quiero encolar la hoja de estilos hija para que se cargue después del otro CSS y poder sobrescribirlo... Pero esto solo duplica el estilo (o lo ignora si usas el mismo 'id').

php-b-grader php-b-grader
27 oct 2015 08:39:46

El principal problema con este método, que puedo identificar, es que el estilo hijo no toma el número de versión del tema hijo. Parece tomar el número de versión del tema padre, lo cual no siempre es ideal.

Garconis Garconis
28 sept 2018 20:08:51

@pieter-goosen Seguí el ejemplo en Temas Hijo que utiliza el número de versión del tema hijo: wp_get_theme()->get('Version'). Sin embargo, termino teniendo CSS duplicado para la versión de WP y la versión del tema hijo: <link rel="stylesheet" id="bushwick-style-css" href="/wp-content/themes/bushwick-child/style.css?ver=4.9.8"...> y <link rel="stylesheet" id="bushwick-child-css" href="/wp-content/themes/bushwick-child/style.css?ver=1.3.6"...>. ¿Cuál sería la solución en estos casos?

IvanRF IvanRF
5 oct 2018 02:30:39