Perché il CSS del mio tema child viene caricato due volte?

6 nov 2014, 17:55:40
Visualizzazioni: 22.5K
Voti: 23

Ho creato un tema child seguendo la documentazione WordPress e ho aggiunto la funzione richiesta

<?php
add_action( 'wp_enqueue_scripts', 'enqueue_child_theme_styles', PHP_INT_MAX);
function enqueue_child_theme_styles() {
    wp_enqueue_style( 'parent-style', get_template_directory_uri().'/style.css' );
    wp_enqueue_style( 'child-style', get_stylesheet_uri(), array('parent-style')  );
}

In qualche modo mi ritrovo con 2 riferimenti al foglio di stile del mio tema child:

<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' />

Come mai succede questo?

1
Commenti

Puoi pubblicare le informazioni dell'intestazione del file style.css nel tema child?

cybmeta cybmeta
6 nov 2014 18:24:08
Tutte le risposte alla domanda 1
5
20

Questo post è collegato da questo post che ho ora aggiornato con le modifiche presenti in questo articolo

Grazie per aver sollevato questo problema. Ho rapidamente testato lo scenario e lo stile del child theme viene effettivamente caricato due volte.

Quando ho aggiornato il codex qualche tempo fa, mi sono assicurato che lo stile del child theme venisse caricato dopo quello del parent theme, senza considerare che questo avviene di default e che il codice fornito avrebbe caricato il foglio di stile del child theme due volte.

Questo può essere facilmente risolto semplicemente rimuovendo il parametro $priority dalla funzione e rimuovendo la parte di enqueue per il child theme. Ho ritestato tutto e funziona. Sarebbe bello se un paio di persone potessero confermarlo.

Nel frattempo, aggiornerò il codex e linkerò a questo post.

Ecco il codice funzionante

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

MODIFICA

Per chiunque questo post non funzioni, si prega di vedere questo post. Dovrete verificare come il parent theme aggiunge gli stili. Il codice in questa domanda presuppone che gli stili nel parent theme siano caricati nel modo corretto in cui dovrebbero essere. Se non è così, guardate le alternative nella risposta linkata e provate quelle.

6 nov 2014 18:35:06
Commenti

Proverò. Sembra possibile che WP non si preoccupi che il foglio di stile venga caricato due volte o che ci sia qualche ragione che ci sfugge.

mmcglynn mmcglynn
6 nov 2014 18:50:49

Essendo in tema, ho riscontrato un paio di problemi usando questo metodo, dettagliati qui.

dMcClintock dMcClintock
9 nov 2014 17:22:47

Il foglio di stile non verrà caricato due volte se usi lo stesso 'id'. Ma questo crea un altro problema - voglio caricare il foglio di stile del child in modo che venga caricato dopo l'altro css così posso sovrascriverlo... Ma questo duplica solo lo stile (o lo ignora se usi lo stesso 'id')

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

Il problema principale con questo metodo, per quanto posso vedere, è che lo stile del child theme non prende il numero di versione del child theme stesso. Sembra che prenda il numero di versione del tema genitore, il che non è sempre ideale.

Garconis Garconis
28 set 2018 20:08:51

@pieter-goosen Ho seguito l'esempio su Child Themes che utilizza il numero di versione del child theme: wp_get_theme()->get('Version'). Tuttavia finisco per avere del CSS duplicato per la versione di WP e la versione del child theme: <link rel="stylesheet" id="bushwick-style-css" href="/wp-content/themes/bushwick-child/style.css?ver=4.9.8"...> e <link rel="stylesheet" id="bushwick-child-css" href="/wp-content/themes/bushwick-child/style.css?ver=1.3.6"...>. Quale sarebbe la soluzione in questi casi?

IvanRF IvanRF
5 ott 2018 02:30:39