Perché il tema CSS di mio figlio viene chiamato due volte?


18

Ho creato un tema figlio secondo i documenti WP 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 finisco con 2 riferimenti al foglio di stile del tema di mio figlio:

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

Perché?


Puoi pubblicare le informazioni di intestazione del file style.css nel tema figlio?
cybmeta,

Risposte:


17

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

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

Quando ho aggiornato il codice un po 'di tempo fa, mi sono assicurato che lo stile figlio sarebbe stato caricato dopo lo stile genitore, senza mai tenere conto del fatto che questo è effettivamente fatto di default e il codice fornito avrebbe effettivamente caricato il foglio di stile figlio due volte.

Questo può essere facilmente corretto semplicemente rimuovendo la $prioritydalla funzione e rimuovendo la parte accodamento per il tema figlio. Ho testato di nuovo tutto e funziona. Sarebbe bello se un paio di persone potessero collaborare a questo.

Nel frattempo, aggiornerò il codice e collegherò a questo post.

Ecco il codice di lavoro

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

MODIFICARE

Per chiunque non stia lavorando a questo post , consulta questo post . Dovrai andare a vedere come il tema principale sta aggiungendo gli stili. Il codice in questa domanda crede fermamente che gli stili nel genitore siano caricati nel modo corretto che dovrebbero essere. In caso contrario, guarda le alternative nella risposta collegata e prova quelle


1
Testerà. Sembra possibile che WP non si preoccupi che il foglio di stile venga caricato due volte o che ci sia qualche logica che ci manca.
mmcglynn,

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

Il foglio di stile non verrà caricato due volte se si utilizza lo stesso "ID". Ma questo crea un altro problema: voglio eliminare il foglio di stile figlio in modo che venga caricato dopo l'altro CSS in modo da poterlo sovrascrivere ... Ma questo duplica solo lo stile (o ignora se si utilizza lo stesso 'id')
php-b- selezionatore

1
Il problema principale con questo metodo, che posso dire, è che lo stile figlio non inserisce il numero di versione del tema figlio. Sembra inserire il numero di versione del tema principale, che non è sempre l'ideale.
Garconis,

@ Pieter-Goosen ho seguito l'esempio a temi Bambino che utilizza il numero di versione del tema del bambino: wp_get_theme()->get('Version'). Comunque finisco per avere duplicati CSS per la versione WP e la versione del tema figlio: <link rel="stylesheet" id="bushwick-style-css" href="/wordpress//wp-content/themes/bushwick-child/style.css?ver=4.9.8"...>e <link rel="stylesheet" id="bushwick-child-css" href="/wordpress//wp-content/themes/bushwick-child/style.css?ver=1.3.6"...>. Quale sarebbe la soluzione in questi casi?
IvanRF
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.