Supporto » Aspetto = Temi » Aiuto per functions.php su child-theme

  • Risolto agnese68

    (@agnese68)


    Buongiorno,
    chiedo aiuto agli esperti dato che io non lo sono per niente.
    Tempo fa ho creato il child-theme per il mio tema usando @import per il file style.css,
    ora volendo fare le cose per bene ho provato a creare il file functions.php anzichè usare @import, scrivendo il seguente codice:

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

    ma mentre su PC visualizzo il sito correttamente, su smartphone è come se l’importazione non funzionasse.
    Qualcuno ha riscontrato questo problema ?
    Il codice è corretto o sbaglio qualcosa ? Su un altro post ho letto che qualcuno sostituisce parent-style con il nome del tema, cioè se il mio tema si chiama almera, devo scrivere almera-style?
    Grazie per l’aiuto

Stai vedendo 7 repliche - dal 1 al 7 (di 7 totali)
  • Ciao @agnese68 e intanto complimenti per la volontà di fare le cose fatte bene, hai appena guadagnato il mio respect.

    Secondo me quello che sta succedendo è che per il momento sul tuo PC stai consultando la versione cachata del tema (salvata nel browser) mentre da cellulare viene caricato il sito con le nuove modifiche che probabilmente non sono state inserite nel modo corretto.

    Se non sbaglio, l’errore principale è quello di utilizzare la funzione get_template_directory_uri() perché fa riferimento alla cartella del tema genitore e va a cercare il file style.css al suo interno.

    Come suggerito nella documentazione che ti ho collegato, sarebbe meglio fare un tentativo con la funzione get_stylesheet_directory_uri() per scoprire se tutto funziona (scusa il gioco di parole) correttamente.

    Prova a fare questo tentativo, assicurati di avere la cache svuotata anche sul browser del PC e facci sapere come va la situazione 😉

    Spero che questo ti abbia aiutata a risolvere il problema, se dovesse continuare a presentarsi non esitare a rispondere a questo topic.

    A presto,
    Andrea

    • Questa risposta è stata modificata 4 mesi, 2 settimane fa da  Andrea Barghigiani. Ragione: aggiunta funzione corretta

    Ciao @agnese68,
    rispetto a quanto hai chiesto qui

    se il mio tema si chiama almera, devo scrivere almera-style?

    la risposta è no: scrivi solo il nome del tema genitore.

    Per il resto segui la risposta di Andrea 🙂

    Carissimi, grazie mille a tutti e due, in effetti adesso funziona !
    Questo però è la conferma che non ci ho capito niente ! 🙁
    Ovvero, leggendo in rete, pensavo di dover collegare al tema figlio lo style.css del genitore per importarne le regole, dato che sullo style.css del figlio ho scritto solo le righe di base.
    Quindi mi sfugge il modo in cui questo collegamento avvenga, scusate la lungaggine ma vorrei capire, ditemi se e dove sbaglio:
    1. Se inserisco il file style.css nel figlio e non aggiungo @import e non creo nessun functions.php, lo style.css del figlio dovrebbe sovrascrivere quello del genitore e dovrebbe darmi errore perchè non vi è scritta nessuna regola.
    2. Se inserisco il file style.css nel figlio e aggiungo @import, oltre a quello del figlio dovrebbe venir caricato anche quello del padre e quindi funziona.
    3. Se inserisco il file style.css nel figlio che è il tema attivo, e con il functions.php dico di cercare il suo style.css, come viene letto anche quello del padre ????

    Ciao @agnese68, non ti scoraggiare se senti che hai ancora un po’ di confusione nell’approccio e anzi fatti i complimenti perché stai imparando qualcosa di nuovo 😀

    Nel tentativo di aiutarti nell’apprendimento rispondero direttamente a ciascuna delle tue domande:

    1. Senza aggiungere @import puoi soltanto sfruttare la struttura del tuo tema genitore e dovrai crearti da zero tutti gli stili dei tuoi CSS.
    2. Utilizzare @import all’interno del CSS del figlio ti permette di ereditare dal genitore tutti gli stili e ti consente di sovrascriverli grazie al concetto “a cascata” dei fogli di stile.
    3. Puoi dire al tuo WordPress, grazie al PHP, di caricare il CSS del genitore e tendenzialmente è la soluzione migliore perché permette di ridurre il numero di chiamate HTTP.

    Quindi il codice che devi inserire nel tuo functions.php per dire a WordPress di caricare sia il CSS del tema genitore che quello del figlio devi utilizzare il seguente blocco di codice:

    add_action( 'wp_enqueue_scripts', 'carico_stili' );
      function carico_stili(){
        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' ) );
    }

    Come puoi notare stiamo usando due funzioni differenti per caricare i distinti CSS:

    • get_template_directory_uri() – che ci da il percorso al tema principale (il genitore in questo caso);
    • get_stylesheet_directory_uri() – che ci da il percorso alla cartella contenente il foglio di stile (in questo caso il tema figlio).

    Spero che adesso la situazione sia più chiara, se hai bisogno di ulteriore aiuto non esitare a farcelo sapere.

    A presto,
    Andrea

    Andrea, grazie mille per la spiegazione,pazienza e disponibilità, ho capito la differenza tra i due get_.
    Quello che non capisco è quello che succede poi al lato pratico…
    Dentro la cartella del tema figlio, ho inserito un footer.php perchè era qui che volevo apportare le modifiche, lo screenshot.png, e fin qui tutto ok e il file style.css che contiene solamente le istruzioni base per la sua creazione e nient’altro:
    /*
    Theme Name: almera Child
    Description: Child Theme del tema almera
    Author: Agnese Rasura
    Author URI: http://www.agneserasura.com/
    Template: almera
    Version: 1.0
    */
    L’uso del get_template nel functions.php mi dava problemi di visualizzazione, mentre usando come mi hai suggerito tu get-stylsheet (e solo questo)tutto funziona!
    E’ qui che non capisco, perchè tutte le istruzioni sono nello style.css del genitore ma vengono lette ugualmente.
    Mi viene da pensare quindi che vengano caricati entrambi e che il figlio non sovrascriva il genitore.
    Ad ogni modo, nonostante l’emicrania 🙂 sono molto felice che funzioni !!!

    Ciao @agnese68,
    puoi approfondire il Child Theme con la documentazione ufficiale 🙂
    https://codex.wordpress.org/Child_Themes
    https://developer.wordpress.org/themes/advanced-topics/child-themes/

    Grazie ! 🙂
    Sto leggendo e rileggendo ! 😉

Stai vedendo 7 repliche - dal 1 al 7 (di 7 totali)
  • Devi essere collegato per rispondere a questo topic.