Il tema child non sovrascrive il file style.css del tema padre

10 ott 2014, 17:24:44
Visualizzazioni: 49.1K
Voti: 4

Ho appena creato un tema child ma ogni modifica che faccio nel file style.css non sovrascrive lo style.css del tema padre - gli altri file funzionano. L'ho fatto in questo modo:

  1. Creazione di una nuova cartella per il tema child nella directory dei temi
  2. Copia del file style.css originale al suo interno
  3. Aggiunta nell'header "Template: orion"
  4. Selezione e attivazione del mio tema child nelle opzioni dei temi WordPress

E ora quando modifico elementi nel file style.css del tema child... la pagina appare ancora uguale dopo le modifiche. Perché?

0
Tutte le risposte alla domanda 4
8
13

È importante notare che il foglio di stile del tema figlio viene caricato dopo gli stili del tema genitore, quindi questo non dovrebbe essere un problema. Penso che ciò che sta accadendo qui sia che stai cercando di modificare stili che non sono presenti nel foglio di stile del tema genitore, ma in altri fogli di stile personalizzati. Se questo è il caso, le tue modifiche non funzioneranno perché molto probabilmente il foglio di stile del tuo tema figlio viene caricato prima dei fogli di stile personalizzati nel tema genitore.

Va inoltre notato che @import non dovrebbe essere utilizzato per importare il foglio di stile del tema genitore. Il modo corretto è caricarlo utilizzando wp_enqueue_style() agganciato a wp_enqueue_scripts

Ecco come caricare correttamente e aggiungere il foglio di stile del tema genitore al tema figlio.

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

Dal codex, questo è il modo corretto in cui dovrebbe apparire il tuo foglio di stile

/*
 Theme Name:   Twenty Fourteen Child
 Theme URI:    http://example.com/twenty-fourteen-child/
 Description:  Tema figlio di Twenty Fourteen
 Author:       John Doe
 Author URI:   http://example.com
 Template:     twentyfourteen
 Version:      1.0.0
 Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
 Text Domain:  twenty-fourteen-child
*/


/* =Personalizzazione del tema inizia da qui
-------------------------------------------------------------- */

NOTA

Ho aggiornato il codex con queste informazioni in questo post

MODIFICA

Da un commento qui sotto

Se il tema genitore non utilizza wp_enqueue_style(), come si può caricare il file style.css del tema genitore SENZA modificare i template del tema genitore? Questo punto non è chiaro nel Codex che hai aggiornato. Puoi per favore chiarire con un esempio.

Vorrei iniziare con questo, se sei un autore di temi, per favore, MAI aggiungere fogli di stile o script tramite tag <link> nell'header del tuo tema. Questo è il modo scorretto di procedere. Carica e registra correttamente questi stili e script tramite l'hook wp_enqueue_scripts come descritto nel Codex

Ad essere sincero, non mi ero reso conto che ci sono ancora alcuni autori di temi che fanno questo. Penso che il modo migliore per risolvere questo problema sia copiare il file header.php del tema genitore nel tuo tema figlio e rimuovere manualmente (eliminando) gli stili e gli script dall'header.

Puoi poi procedere a caricarli e registrarli come al solito utilizzando wp_enqueue_scripts come nell'esempio sopra. Ricorda solo, utilizza get_template_directory_uri() per caricare e registrare script e stili dal tema genitore, e ricorda, l'ordine in cui carichi stili e script è importante qui. Se uno script/stile dipende da un altro, caricarlo dopo quello specifico script/stile

11 ott 2014 12:17:25
Commenti

Buona idea aggiornare la pagina del Codex ;-)

birgire birgire
11 ott 2014 14:57:31

Grazie, sono totalmente d'accordo. Spero che questo aiuterà altri in futuro a fare le cose un po' meglio :-)

Pieter Goosen Pieter Goosen
11 ott 2014 15:00:42

se il tema genitore non utilizza wp_enqueue_style() come si può caricare lo style.css del tema genitore SENZA modificare i template del tema genitore?

Tara Tara
6 nov 2014 23:09:56

se il tema genitore non utilizza wp_enqueue_style() come si può accodare il file style.css del genitore senza modificare i template del tema genitore. Come sai, il motivo per cui si crea un tema figlio è proprio per evitare di modificare i template del tema genitore.

Tara Tara
6 nov 2014 23:12:06

@Pieter Goosen: Se il tema genitore non utilizza wp_enqueue_style() come si può accodare il file style.css del tema genitore SENZA modificare i template del tema genitore? Questo punto non è chiaro nel Codex che hai aggiornato. Potresti chiarire con un esempio per favore? Grazie.

Tara Tara
6 nov 2014 23:16:10

@Tara Grazie per aver sollevato questo punto, onestamente non avevo pensato che la gente lo facesse ancora. Vedi le modifiche che ho apportato alla mia risposta

Pieter Goosen Pieter Goosen
7 nov 2014 06:36:31

@PieterGoosen Sto utilizzando un tema che ha diverse versioni, ad esempio scura, chiara ecc. Aggiunge un foglio di stile personalizzato per questo. La mia domanda è come sovrascriverlo dal tema figlio?

Imran Subhani Imran Subhani
30 giu 2015 13:58:17

@Imran dovresti aprire una nuova domanda per questo problema :-)

Pieter Goosen Pieter Goosen
30 giu 2015 14:00:52
Mostra i restanti 3 commenti
2

Assicurati che il tema genitore non utilizzi wp_enqueue_style() nel suo file functions.php.

Se lo fa, puoi anche caricare il foglio di stile del tema figlio dal suo functions.php

add_action( 'wp_enqueue_scripts', 'load_my_child_styles', 20 );
function load_my_child_styles() {
    wp_enqueue_style( 'child-style', get_stylesheet_directory_uri().'/style.css', array('twentyfourteen-style'), '1.0.0' );
}

Ecco un esempio di come dovrebbe apparire l'intestazione nel file style.css del tuo tema figlio

/*
 Theme Name:   Twenty Fourteen Child
 Theme URI:    http://example.com/twenty-fourteen-child/
 Description:  Tema figlio di Twenty Fourteen
 Author:       John Doe
 Author URI:   http://example.com
 Template:     twentyfourteen
 Version:      1.0.0
 Tags:         light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
 Text Domain:  twenty-fourteen-child
*/

http://codex.wordpress.org/Child_Themes

10 ott 2014 17:58:18
Commenti

Ciao, vorrei solo segnalare che la parte @import non è consigliata, sarebbe meglio accodarla. Vedi ad esempio questa discussione.

birgire birgire
10 ott 2014 20:38:35

@birgire Grazie per l'aggiornamento. Vedi questo post con un metodo alternativo http://wordpress.stackexchange.com/a/167903/9884

Brad Dalton Brad Dalton
9 nov 2014 13:39:13
1

Ho trovato questa discussione mentre leggevo il capitolo sui Child Theme nella WordPress Codex.

Ho creato un child theme basato su Simone (che a sua volta è basato su _s underscores) e ho creato un file functions.php con il codice raccomandato:

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

Tuttavia, utilizzando questo metodo si è creato un problema nel mio child theme. Ho segnalato il problema su GitHub: link. La soluzione è stata rimuovere la costante PHP_INIT_MAX dalla parte di add_action().

Mi chiedo se questo sia un problema relativo a Simone o se riguardi anche altri temi (nel qual caso potrebbe essere un problema nella funzione)...

Grazie!

20 ott 2014 16:23:45
Commenti

Avresti dovuto chiedere questo come una domanda. Sfortunatamente questa è la prima volta che vedo questo tuo post. Questo problema è stato segnalato ieri ed è stato risolto ora. Per favore vedi questo post

Pieter Goosen Pieter Goosen
7 nov 2014 06:15:16
1

Anch'io ho avuto lo stesso problema e l'ho risolto modificando i permessi della cartella del child theme e dei file al suo interno impostandoli a 775. Potrebbe non essere il metodo più sicuro, ma nel mio caso ha funzionato. Fammi sapere se funziona anche per te :)

15 giu 2017 09:03:51
Commenti

Accidenti. Non riesco nemmeno a immaginare il livello di disperazione che possa averti spinto a questo. È estremamente pericoloso. Cercherei piuttosto qualche altra soluzione, o un tema diverso.

Tedinoz Tedinoz
13 set 2018 03:25:19