Cerca

Aggiornare un tema WordPress modificato, senza perdere le personalizzazioni

Aggiornare temi WordPress modificati e creare un tema child

Hai personalizzato il tema di WordPress senza usare un tema child, e adesso non puoi più aggiornare il tema senza perdere tutte le modifiche che hai fatto?

Magari tante cose ti stanno facendo capire che il tema sarebbe bene aggiornarlo, problemi di sicurezza innanzi tutto, e non ultima la compatibilità con le nuove versioni di WordPress e dei plugin utilizzati.

Magari è pure l’occasione buona che per utilizzare un tema child, ma come fare?

[tweet “Tenere aggiornati #WordPress, temi e plugin, è importante per la #sicurezza”]

Per lavoro mi ritrovo quasi quotidianamente con installazioni di WordPress, per lo più siti aziendali, dove il tema non viene aggiornato da parecchie versioni, per la paura di perdere tutta le personalizzazioni apportate.

Spesso e volentieri questo causa anche il mancato aggiornamento dello stesso WordPress, e dei plugin installati, con tutto quello che ne consegue in sicurezza, funzionalità e prestazioni.

Per fortuna è possibile rimediare.

Sarà un tantinello brigoso, ma una volta fatto non ti dovrai più preoccupare, e potrai aggiornare il tema e tutta la tua struttura tranquillamente, ogni volta che viene rilasciato un aggiornamento, senza la paura di perdere le modifiche effettuate.

Devi solo armarti di un po’ di pazienza, e seguire alla lettera queste istruzioni.

Creare il tema child di un tema già modificato.

Probabilmente quando hai creato il tuo sito i temi child per WordPress ancora non esistevano, sono stati introdotti con la versione 3.0, oppure ne ignoravi l’esistenza. Poco male, questo è un buon momento per rimediare.

Quello che segue è il procedimento che ormai adotto da diverso tempo. Magari possono esserci metodi alternativi diversi, più rapidi o semplici, ma così facendo io non ho mai riscontrato particolari problemi.

1. Fai un backup generale di file e database!

È la prima regola da seguire sempre, in assoluto. È dettata dal buon senso.
Se non fai un backup, e poi qualcosa va storto, sono tutti cavoli tuoi, e pure molto amari.

2. Crea una cartella per contenere il nuovo thema child.

Entra in FTP sul tuo sito in WordPress, segui il percorso wp-content > themes, e crea una cartella vuota con un nome a piacere, senza spazi e meglio se tutto in minuscolo, tipo miotema o temachild. Il nome non è importante.

3. Identifica i file del tema in uso che sono stati modificati con la personalizzazione.

Di solito i file del template che vengono modificati sono sempre gli stessi, tipo style.css, header.php, footer.php, single.php, archive.php e index.php per citare i più comuni.
Potresti aver modificato anche il file functions.php, per aggiungere filtri e funzioni, ma questo richiede un discorso a parte.

Se hai difficoltà a ricordarti o riconoscere i file modificati, puoi ricavarli così:

  1. Scarica sul tuo computer la cartella del tema in uso sul tuo sito
  2. Procurati una copia del tema originale, importante che sia la stessa versione di quello che stai usando.
  3. Con programmi che cercano le differenze nei files, fai una ricerca ed avrai facilmente l’elenco dei file modificati e delle specifiche modifiche (utile).
    Io per queste cose uso il comando da terminale diff, impegnativo ma estremamente potente, oppure su Mac l’ottimo editor di testi TextWrangler, che tra le tante funzioni c’ha pure questa. Un software per me indispensabile, per questo e molti altri motivi.
    Un’ottima alternativa, sempre per mac, è Kaleidoscope, che però costa quasi settanta dollari.
    Sicuramente su Windows ci sarà qualcosa di simile, ma non utilizzando la piattaforma di Microsoft non saprei consigliarti. Ho letto però bene di WinMerge.

4. Copia i file modificati nella cartella che hai appena creato.

Una volta ricavato l’elenco dei file modificati, copiali (non spostarli) dal tema in uso alla cartella creata al punto 2.

Se le modifiche riguardano anche il file functions.php, non lo copiare, ma sposta le parti modificate o aggiunte in un file functions.php vuoto, sempre nella cartella creata al punto due.

Il file functions.php nella nuova cartella potrebbe essere una cosa del genere:

<?php

/* INSERIRE QUI FILTRI E FUNZIONI PERSONALIZZATE */

?>

Attenzione perché modifiche improprie nel file delle funzioni del tema possono essere la causa di malfunzionamenti parziali o totali del sito.

5. Metti il sito in manutenzione, e aggiorna il tema

A questo punto, è arrivato il momento di rimboccarsi le maniche per davvero.

Giusto per non complicare la vita ai tuoi visitatori, metti il sito in modalità manutenzione, grazie ad uno dei tanti plugin disponibili (tipo Maintenance), ed aggiorna il tema.

Puoi eseguire l’aggiornamento seguendo le classiche modalità di WordPress, se l’aggiornamento del tema compare negli aggiornamenti di WordPress, oppure aggiornarlo manualmente, procedura richiesta da alcuni temi premium.

La seconda strada è semplice, non ti deve spaventare, devi prendere il contenuto della nuova versione del tema, una volta scaricato e scompattato sul tuo computer, e sovrascrivere il contenuto della cartella del tema sul tuo sito.

Terminato l’aggiornamento, verifica che il sito e la bacheca rispondano correttamente.

6. Completa il tema child

Con la cartella che hai creato al punto 2, ed avendoci copiato i file modificati del tema originale, hai messo le basi per il tema child che, in futuro, ti permetterà di aggiornare il tema originale senza troppe preoccupazioni.

Se hai bisogno di rinfrescarti la memoria, potresti leggere come funzionano i temi child di WordPress, potrebbe esserti utile per capire meglio quello che faremo di qui in avanti.

Attenzione: leggi bene la documentazione del tema che stai utilizzando riguardo l’uso di temi child.
Nella maggior parte dei casi fanno riferimento alla documentazione standard di WordPress, e allora va bene pure quanto scritto poco sotto, in altri casi invece il tema child deve contenere altri file e cartelle per funzionare correttamente, file e cartelle che dovrai inserire nella cartella del tema child su cui stai lavorando.

Riguardo un tema child standard, secondo le specifiche di WordPress, ti manca solamente da definire il foglio di stile.

Devi cioè creare, nella cartella del tema child, un file style.css con questo contenuto:

/*
Theme Name: Il mio primo tema Child
Theme URI: http://www.miositoweb.dom/
Description: Tema child per proteggere il tema originale di WordPress
Author: Me Medesimo
Version: 0.1 beta
Template: twentyfourteen
*/

@import url("../twentyfourteen/style.css");

Le cose veramente importanti da sapere, e che devi modificare:

  • Riga numero 2: va inserito il nome del tema che vuoi che appaia nella pagina dei temi, meglio se non è uguale al nome di un tema esistente per non creare confusione.
  • Riga numero 7: va inserito il nome della cartella del tema originale, esattamente come la vedi via FTP facendo attenzione tra maiuscole e minuscole. Nell’esempio, la cartella di Twenty Fourteen, il tema standard di WordPress.
  • Riga numero 8: devi modificare il percorso sempre con il nome della cartella che contiene il nome originale, facendo attenzione tra maiuscole e minuscole, al posto di twentyfourteen usato come esempio.
  • Salva il file, il tuo tema child è pronto per l’uso.

7. In teoria avresti finito

Sei arrivato alla prova del nove, vai nella bacheca di WordPress, In Aspetto > Temi, ed attiva il tema child che hai creato, quindi controlla che tutto funzioni bene, sia lato visitatori che in bacheca.

[tweet “Come aggiornare un tema #WordPress modificato, senza perdere le personalizzazioni”]

Possibile complicazione: se il tema che stavi utilizzando era parecchie versioni indietro rispetto la versione corrente, è possibile che ci siano differenze importanti tra i file del template modificati e quelli originali, tali da causare malfunzionamenti.

Se si verifica questa situazione, devi solo prendere i template originali del tema della versione corrente, ed adattare a questi le modifiche fatte alle vecchie versioni degli stessi. Saranno questi i file del template che dovrai utilizzare nel tema child.

[box type=”tick” style=”rounded” border=”full”]Voi rimanere informato su WordPress e WooCommerce, consigli e barbatrucchi anche non pubblicati su questo blog? Iscriviti alla newsletter![/box]

Condividi se ti è piaciuto!

Altri articoli che potrebbero interessarti:

Picture of Roberto Rota

Roberto Rota

Libero professionista, un "artigiano del web", lavoro nella comunicazione in rete da quando esiste Internet. Mi occupo principalmente di assistenza su WordPress e assistenza e consulenza WooCommerce, seguo la realizzazione di progetti web, in particolare siti di e-commerce, visibilità e comunicazione in rete. Il mio curriculum è su Linkedin, e mi puoi trovare anche su Instagram, FaceBook e Twitter.

DAI IL TUO CONTRIBUTO

Se il mio lavoro ti è stato di aiuto, contribuisci alla continuità di questo sito.
Basta una piccola donazione su PayPal, una pizza e una birra alla tua salute!

32 risposte

  1. Ciao Roberto! Intanto grazie per la guida. Ho un problema. Come hai sottolineato tu, uno dei file da me modificati è style.css, quindi l’ho copiato nella cartella del child theme. Poi però arrivo al punto in cui dici di creare un file style.css (con il contenuto da te indicato: nome del theme ecc) e inserirlo nella stessa cartella. A questo punto mi ritrovo due file style.css… è giusto? Come posso ovviare?

    1. Ciao Azzurra, ovviamente non puoi avere due file style.css nella stessa cartella.

      La cosa migliore sarebbe creare il file style.css come da guida, e copiarci le cose modificate che hai nel file del tema.

      Oppure copiare il file nella cartella del tema child e cambiare l’intestazione, la parte iniziale commentata per capirci, m potresti avere qualche problema con gli eventuali percorsi indicati nel file.

      rob

      1. Grazie per la pronta risposta! Ho provato in entrambi i modi… niente..non carica nessuno stile…

  2. ciao Roberto, puoi dirmi quale e’ il plugin social che usi in questa pagina? E’ a pagamento? grazie
    Infatti c’e’ anche whatsapp vedo

      1. ah ok grazie mille si. Jetpack sarebbe il plugin in cui ci si deve registrare con un account wordpress.com?
        PS: Ho provato adesso a scriverti col modulo di contatto, da’ un messaggio di errore dice di riprovare piu’ tardi, volevo solo avvisarti.

        1. Si, jetpack richiede un account wordpress.com (gratuito per l’utilizzo base)

          Strano per il modulo di contatto, ho appena provato e non mi ha dato errori, grazie comunque per il feedback.

          rob

  3. Ciao Roberto bellissima guida, ti chiedo un consiglio, io sono riuscito a creare un tema child che ho attivato e funziona benissimo del tema acquistato di themeforest THE7 con una vecchia versione. se ora voglio aggiornare il tema padre per non perdere nulla, come devo fare? Attivo il tema genitore e lo aggiorno e poi torno ad attivare il child? ed i plugin restando attivo sul child riesco ad aggiornarli?
    grazie ciao

    1. Se non hai modificato i files del tema, aggiornandolo non dovresti perdere nessuna impostazione, a meno che il tema che stai usando non sia troppo vecchio, e allora qualcosa magari la dovrai rimettere a posto.

      Il tema child lo devi preparare e attivare prima di cominciare a lavorare sul sito.

      Se invece hai modificato dei files del tema, devi creare il tema child e copiare in quello i files modificati, attivarlo e vedere che succede.

      Roberto

  4. bellissimo articolo e spiegato bene, anche se rimane un po difficile per il fai da te!
    Volevo chiederti una cosa. Non riesco a far diventare NON cliccabile i titoli dove sotto ci sono riportati i vari progetti. Tipo: lavori, poi sotto ci sono diversi nomi. Lavori è sempre cliccabile. come faccio a disabilitarlo?
    Dove posso mandarti il link del sito?

    Grazie mille Rob!!!!

    1. Puoi usare un link fittizio, come il classico “#”, per far sì che il link non porti a nulla, ma ovviamente dipende da come sono gestiti i link.
      Se si tratta di menu o widget, o se sono inseriti manualmente.

      rob

  5. Ciao Roberto,
    ottimo articolo.ho un dubbio!i file modificati da copiare nella nuova cartella child, vanno copiati all’interno di cartelle e sottocartelle create con lo stesso nome di quelle originali? es. themachild/assets/css ?
    Grazie per l’aiuto!

    Ludovico

  6. problemi con tema copyblogger:

    Vedo in giro che molti lo usano, con colori cambiati, cioè i titoli e i link, invece di rosso, sono di altri colori, e così lo sfondo della testata, non è nero come di defalut. Io ho provato a sostituire i codici dei colori dal foglio di stile, ma niente, le modifiche non si visualizzano.

    Come posso fare? Oppure questo tema non è modificabile? (e allora come hanno fatto gli altri che lo hanno modificato? Serve pagare qualcosa per avere un’autorizzazione?)

  7. ti spiego :quando vado a modificare il colore in cifra esadecimale prima nella barra stile css di firebug, e poi nel foglio di stile del pannello di controllo di wordpress giusto no..?
    poi faccio aggiorna file sotto , ma non me lo aggiorna..
    ritorna il colore di prima…. che puo’ essere?
    sto diventando matto.. scusami roby.. 🙂

    1. Ciao Rocco, da quello che dici sembra che il problema sia un altro, cioè che dall’editor di WP fai delle modifiche ma non te le salva.

      Non è che hai dei problemi di scrittura sui file?

      Magari un problema di permessi?

      rob

  8. Su wordpress: dopo le modifiche fatte con Firebug non mi aggiorna il tema.
    Perche’?? Quando rivisualizzo il tema è sempre uguale..!!
    Ti prego aiutami..!!!
    Grazie!

    1. Ciao Rocco, difficile risponderti ad una domanda così generica.

      Non uso Firebug e non ti so dire se possa essere lui il colpevole, oppure se sbagli i files da modificare, o se c’è qualche cache che non ti fa vedere le modifiche.

      rob

  9. Grazie per l’articolo, molto utile!
    Grazie ai tuoi articoli, ho personalizzato convenientemente un mio sito. Ora, vorrei togliere il pulsante “Acquista” dalla carrellata dei prodotti in home page, ma senza rimuoverlo globalmente (come fa, benissimo, il plugin WooCommerce Catalogue), immagino che sia possibile inserendo una funzione in function.php del tema in uso, ma… quale funzione inserire/modificare?
    Grazie per i suggerimenti, e buon lavoro!

            1. Prova a mettere questa riga nei css personalizzati se il tema li prevede, o nello style.css del tema child:

              .home a.button {display:none !important;}

              dovrebbe funzionare, spero 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.