Supporto » Aspetto = Temi » Aiuto su Child Theme

  • Ciao a tutti
    premetto che sono un principiante ma penso di aver cercato e guardato l’impossibile riguardo la creazione di temi child ma c’è qualcosa che proprio non riesco a capire e sarei molto grato (a vita 😉 a chi mi illuminerà.

    Dunque:
    io sto usando un tema (padre) che ha il suo bel file style.css nella directory principale ma che (se ispeziono le pagine del sito con firebug ad esempio) noto che non lo richiama praticamente mai mentre ha un altro file nel percorso “tema-padre/css/style-ltr.css” che risulta essere quello sempre usato per i vari elementi delle pagine. Il tema ovviamente ha anche vari file php sparsi un po’ ovunque in vari percorsi cos’ come vari css.

    Siccome voglio modificare alcuni aspetti del tema e non voglio perdere le modifiche ad ogni aggiornamento del tema, ho creato il tema child seguendo le istruzioni qui
    ovvero ho creato

    – il foglio style.css solo con l’intestazione commentata con il richiamo alla cartella del tema padre (non ho usato @import url per intendersi)

    – il file functions.php con il seguente codice

    <?php
    function my_theme_enqueue_styles() {
    
        $parent_style = 'parent-style';
        wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
        wp_enqueue_style( 'child-style',
            get_stylesheet_directory_uri() . '/style.css',
            array( $parent_style ),
            wp_get_theme()->get('Version')
        );
    }
    add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
    ?>

    che credo di aver capito richiama il tema padre e anche eventuali file presenti nel path del tema figlio sovrascrivendo quelli del padre. E in effetti ho notato che se voglio modificare il file “tema-padre/functions/footer.php” creando il nuovo file “tema-figlio/functions/footer.php” funziona…il footer.php figlio sovrascrive il file del padre (intendo dire che il footer.php è completo come quello del padre ma con le modifiche che voglio).

    Il problema però rimangono i file css! In particolare il famoso file “tema-padre/css/style-ltr.css che proprio non capisco come fare per fargli prendere le modifiche!! Devo ricopiarlo tutto nel nuovo path “tema-figlio/css/style-ltr.css” e lì apportare le modifiche?? Oppure posso scrivere solo le modifiche nel file “tema-figlio/css/style-ltr.css” e il sistema fa un merge tra il file padre e il file figlio??? Oppure le modiche le posso scrivere direttamente nel file “tema-figlio/style.css”???

    Scusate se sono stato prolisso ma sono diversi giorni che ci sto impazzendo facendo milliardi di prove e non sono ancora arrivato a niente.

    Ho letto che potrebbe dipendere dal modo in cui il tema padre registra il suo stylesheet….mah…ripeto che sono un principiante e per niente esperto di funzioni wordpress quindi ringrazio fin da ora chi vorrà aiutarmi.

Stai visualizzando 11 risposte - dal 1 al 11 (di 11 totali)
  • Moderatore Cristiano Zanca

    (@cristianozanca)

    Ciao @sandro807 ,

    prova ad aggiungere nel file functions.php del tema figlio il codice che aggiunge anche l’altro file css e ricrea la stessa struttura a cartelle del padre:

    function carica_temafiglio_css() {
        wp_enqueue_style( 'layout', get_stylesheet_directory_uri() . 'tema-figlio/css/style-ltr.css' );
    }
    add_action( 'wp_enqueue_scripts', 'carica_temafiglio_css' );
    Chi ha creato la discussione sandro807

    (@sandro807)

    Innanzi tutto grazie mille @cristianozanca per la risposta. Farò come dici ma secondo te nel file “tema-figlio/css/style-ltr.css” (ovvero la stessa struttura a cartelle del padre) devo mettere tutto il file completo style-ltr.css comprensivo di modifiche oppure posso mettere solo le classi e attributi che voglio modificare?

    Moderatore Cristiano Zanca

    (@cristianozanca)

    il consiglio è di mettere il file completo style-ltr.css comprensivo di modifiche

    Aggiornaci,
    Ciao

    • Questa risposta è stata modificata 7 anni, 4 mesi fa da Cristiano Zanca.
    Moderatore Cristiano Zanca

    (@cristianozanca)

    Per maggiori compatibilità con gli upgrade futuri tel tema padre, credo si a meglio inserire nel file style-ltr.css solo le classi e attributi che vuoi modificare.

    Facci sapere com’è andata.

    Buona Giornata

    Buongiorno, mi accodo alla discussione.
    Premetto che anche io sono alle prime armi e avrei bisogno di capire 2 cose:
    1 – il codice di cui sopra vale quindi per tutti i fogli css all’interno del tema genitore?
    2- Ma se volessi modificare il css di un plugin facendolo nel tema figlio come faccio?
    Grazie.

    Moderatore Gloria Liuni

    (@glorialchemica)

    Ciao Sinepax,
    come hai capito la regola base dei Child-theme è la riproduzione dell’albero del tema genitore. Al di là di quello che ti dice l’ispettore del browser, quasi tutti i temi nella root principale hanno un file chiamato style.css
    Nel caso tu abbia sotto una cartella CSS più fogli di stile con nomi diversi è possibile che questi vengano infine tutti richiamati nel file style.css
    In questo caso invece di ricreare e richiamare i vari fogli di stile, sarebbe sufficiente tu richiamassi nel tema figlio solo il file style.css (spero di essermi spiegata)

    Personalmente richiamo il file di style in questo modo:

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

    – al posto di parent-style metto il nome del tema genitore.

    Per quanto riguarda le modifiche sui CSS dei plugin, puoi inserire i tuoi selettori nel tuo file di css dove metti le modifiche del tema genitore o se preferisci, puoi prepare un file chiamato ad esempio custom-plugin-style.css e richiamarlo nell’header del tema (avendo accortezza sia l’ultimo ad essere richiamato).
    E ricorda che spesso un !important, risolve molte cose 😀

    Grazie mille!

    Ciao @glorialchemica,
    avrei ancora un problema da risolvere sul mio child-theme: ha funzionato fino a che non ho aggiornato il tema genitore, al chè è scomparso dalla finesta appreance di wp (ma c’è fisicamente sul server) e se lo vado a richiamare dall’editor mi dice :”This theme is broken. The parent theme is missing. Please install the “IonMag” parent theme.” … ma c’è!!!
    Il tema è IonMag, ho provato a scaricare anche il loro child-theme e ad installarlo ma il risultato è sempre “This theme is broken…”
    Ho provato a disattivare tutti i plugin ma senza successo, non so più che fare…
    Mi servirebbe proprio un aiuto!

    Moderatore Gloria Liuni

    (@glorialchemica)

    Ciao @sinepax. E’ possibile che l’aggiornamento del tema genitore non sia andato a buon fine per chissà quale motivo e quindi il tema si sia corrotto.

    Primo: SEMPRE, SEMPRE, SEMPRE il backup prima degli aggiornamenti. Nel caso dei temi io lo scarico in locale da solo segnandomi la versione del tema.

    Secondo: se il sito è online scarica e attiva un plugin che ti metta il sito in manutenzione (se cerchi maintenance dal repository ne escono diversi, io personalmente uso questo https://it.wordpress.org/plugins/wp-maintenance-mode/ )

    Terzo: attiva un tema base di WordPress (tipo un twenty) e disinstalla il tema corrotto. Assicurati sia pulito anche l’FTP. Scarica la nuova versione del tema. A questo punto prova a riattivare il tuo Child-theme

    Fammi sapere 🙂

    Ciao @glorialchemica,
    ho seguito i tuoi suggerimenti ma niente, tra l’altro se recupero il tema precedente all’upgrade tutto torna…
    Non so più che fare.

    Moderatore Gloria Liuni

    (@glorialchemica)

    A questo punto @sinepax, mi sa che non ti resta che tenere installata la versione “stabile” (occhio alla sicurezza) e far presente questa cosa allo sviluppatore del tema.
    Se non c’è stato un problema durante l’aggiornamento non so più come aiutarti. Sorry 🙁

Stai visualizzando 11 risposte - dal 1 al 11 (di 11 totali)
  • Il topic ‘Aiuto su Child Theme’ è chiuso a nuove risposte.