{"id":233442,"date":"2023-02-13T16:52:00","date_gmt":"2023-02-13T13:52:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233442"},"modified":"2022-11-10T23:42:56","modified_gmt":"2022-11-10T20:42:56","slug":"tutorial-sul-tema-wordpress-per-principianti-parte-6-functions-php-di-un-tema","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/tutorial-sul-tema-wordpress-per-principianti-parte-6-functions-php-di-un-tema\/","title":{"rendered":"Tutorial sul tema WordPress per principianti \u2013 Parte 6: Functions.php di un tema"},"content":{"rendered":"\n<p>Oggi impareremo dove e come aggiungere codice al di fuori dei modelli nel nostro tema. Lo facciamo aggiungendo il <code>functions.php<\/code>file del tema. Lungo la strada impareremo anche come aggiungere fogli di stile e script nel modo corretto.<\/p>\n<h2>Il file functions.php di un tema<\/h2>\n<p>Un tema ha bisogno di un posto dove posizionare il codice che non fa parte dei modelli. C&#8217;\u00e8 sempre un mucchio di codice che tutti i temi devono aggiungere per gestire la funzionalit\u00e0. Ad esempio, abilitando la funzione delle immagini in primo piano di WordPress (hai notato che mancava?), supporto per menu, widget, aggiunta di fogli di stile e script (nel modo corretto) e altro ancora.<\/p>\n<p>Quel file \u00e8 <code>functions.php<\/code>. WordPress carica automaticamente e sempre questo file se esiste nel tuo tema. \u00c8 sempre caricato sia in admin che in frontend.<\/p>\n<h2>Aggiunta di un file functions.php al nostro tema<\/h2>\n<p>Creiamo un nuovo file vuoto nella nostra cartella del tema principale e chiamiamolo <code>functions.php<\/code>.<\/p>\n<p>In quel file, inizia immediatamente con un tag PHP di apertura (<code>&lt;?php<\/code>) e <strong>non includere il tag di chiusura<\/strong>. Il <code>functions.php<\/code>file \u00e8 pensato per il codice PHP, non per l&#8217;HTML. Il tuo tema pu\u00f2 interrompersi (o anche solo comportarsi in modo strano) se in questo file sono presenti caratteri o nuove righe al di fuori dei tag PHP. Ovviamente puoi rompere i tag PHP per produrre HTML, ma deve essere fatto all&#8217;interno di funzioni o hook. Lascia che lo spieghi con un esperimento.<\/p>\n<p>Proviamo questo file per vedere come funziona. Dentro <code>functions.php<\/code>scrivi un&#8217;eco di qualche testo fittizio:<\/p>\n<pre><code>&lt;?php\necho 'This is an experiment';<\/code><\/pre>\n<p>Aggiorna il tuo frontend. Viene visualizzato il testo fittizio. Ma se ispezioni o visualizzi il sorgente HTML, vedrai che il testo appare prima di aprire <code>&lt;html&gt;<\/code>. Questo rende HTML completamente non valido!<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153528-61e50fc781eff.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153528-61e50fc781eff.png\" alt=\"Tutorial sul tema WordPress per principianti \u2013 Parte 6: Functions.php di un tema\" ><\/a><\/p>\n<p>Vai al tuo pannello di amministrazione e premi Aggiorna. Fa la stessa cosa anche l\u00ec (potrebbe essere nascosto dietro la barra di amministrazione, ma \u00e8 l\u00ec nell&#8217;HTML).<\/p>\n<p>Come puoi vedere, qualsiasi codice nei tuoi <code>functions.php<\/code>carichi prima di ogni altra cosa nei nostri modelli. Pertanto, di norma, qualsiasi output (HTML esterno ai tag PHP o <code>echo<\/code>) deve essere all&#8217;interno di funzioni che verranno eseguite al momento giusto, normalmente agganciate ad azioni o filtri.<\/p>\n<p>Ricordiamo da quando abbiamo appreso e aggiunto hook nella <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-3-dynamic-content\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">parte 3<\/a> del tutorial sul tema WordPress per principianti. Il modo in cui eseguiamo il codice su un hook consiste nell&#8217;associare una funzione all&#8217;hook con <code>add_action()<\/code>. Proviamo qualcos&#8217;altro; creiamo una funzione agganciata ad un hook che abbiamo gi\u00e0 definito nei nostri template; <code>wp_footer<\/code>.<\/p>\n<p>In <code>functions.php<\/code>rimuovi il <code>echo<\/code>abbiamo aggiunto a scopo di test e invece scrivi:<\/p>\n<pre><code>&lt;?php\nadd_action('wp_footer', 'wptutorial_print_footer');\nfunction wptutorial_print_footer() {\n    echo 'This sentence will appear in footer!';\n}<\/code><\/pre>\n<p>Premi Aggiorna nel frontend e osserva che la stringa appare bene nel punto esatto che hai definito <code>wp_footer<\/code>, subito prima della chiusura <code>&lt;\/body&gt;<\/code>. Inoltre, nota che questo non far\u00e0 eco a nulla in admin. Questo perch\u00e9 <code>wp_footer<\/code>\u00e8 un hook che viene eseguito solo nel frontend.<\/p>\n<p>Facciamo le nostre prime operazioni corrette in <code>functions.php<\/code>!<\/p>\n<p>Nota: in PHP non \u00e8 possibile avere due funzioni con lo stesso identico nome. Ci\u00f2 include i nomi delle funzioni in WordPress, il tuo tema e qualsiasi plug-in attivato! Segui le migliori pratiche e anteponi alle tue funzioni il tuo tema slug, come nell&#8217;esempio sopra: &#8221; <code>wptutorial_&lt;function_name&gt;<\/code>&#8220;. Ci\u00f2 riduce notevolmente l&#8217;arresto anomalo di WordPress a causa di nomi di funzioni identici.<\/p>\n<p>Nota 2: non importa in quale ordine aggiungi funzioni e hook nel tuo file <code>functions.php<\/code>. Ricorda che gli hook vengono eseguiti comunque in determinati checkpoint, non nell&#8217;ordine in cui si trovano <code>functions.php<\/code>. L&#8217;unica eccezione \u00e8 se stai includendo altri file o inizializzando le tue classi.<\/p>\n<h2>Il modo giusto per aggiungere stili e script rispetto al modo sbagliato<\/h2>\n<p>Alcuni di voi ricorderanno dalla <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-3-dynamic-content\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">parte 3<\/a> in cui abbiamo aggiunto l&#8217; <code>wp_head<\/code>hook nel nostro <code>header.php<\/code>. Dopo averlo fatto, WordPress \u00e8 stato in grado di caricare i suoi stili e script, inclusa la barra di amministrazione. Potresti pensare che per aggiungere i nostri fogli di stile dobbiamo creare una funzione agganciata <code>wp_head<\/code>e produrre <code>&lt;link&gt;<\/code>il foglio di stile &#8230; Di solito avresti ragione!<\/p>\n<p>Tuttavia in WordPress c&#8217;\u00e8 un modo speciale per aggiungere script e stili. Questo serve principalmente per gestire l&#8217;ordine di caricamento ed evitare di caricare librerie duplicate. Ad esempio, come autore di temi potresti voler aggiungere Javascript che dipendono dalla <code>jQuery<\/code>libreria. Quindi devi assicurarti che <code>jQuery<\/code>venga caricato prima dei tuoi file. Ma WordPress e qualsiasi plug-in hanno la stessa necessit\u00e0, per assicurarsi che <code>jQuery<\/code>venga caricato anche prima dei loro script. Non \u00e8 possibile caricare la <code>jQuery<\/code>libreria pi\u00f9 volte perch\u00e9 ci\u00f2 causa problemi. Quindi WordPress ha un modo per gestire in quale <strong>ordine<\/strong> vengono caricati gli script e i fogli di stile.<\/p>\n<h2>Aggiunta di fogli di stile (nel modo giusto)<\/h2>\n<p>Per aggiungere qualsiasi stile e qualsiasi javascript, utilizziamo un hook chiamato <code>wp_enqueue_scripts<\/code>. S\u00ec, usi questo hook anche per gli stili, nonostante il suo nome. L&#8217;aggiunta di script e stili viene definita &quot;accodamento&quot; &#8211; come in una coda. Mettiamo in coda (aggiungiamo) il nostro foglio di stile usando la funzione <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_style\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_enqueue_style<\/a> nel nostro <code>functions.php<\/code>:<\/p>\n<pre><code>&lt;?php\nadd_action('wp_enqueue_scripts', 'wptutorial_enqueue_scripts');\nfunction wptutorial_enqueue_scripts() {\n    wp_enqueue_style('theme-main-style', get_stylesheet_directory_uri().'\/style.css');\n}<\/code><\/pre>\n<p>La <code>wp_enqueue_style<\/code>funzione accetta almeno due parametri. Il primo \u00e8 un nome univoco (handle o &quot;ID slug&quot;) e il secondo la posizione del file. L&#8217;handle deve essere univoco in quanto questo \u00e8 l&#8217;identificatore utilizzato da WordPress per determinare se sono presenti duplicati.<\/p>\n<p>Per quanto riguarda il ritorno del percorso al tuo tema, ci sono molte funzioni disponibili. Sopra ho usato <code>get_stylesheet_directory_uri()<\/code>che restituisce l&#8217;URL alla cartella del tema, quindi ho aggiunto il resto del percorso al nostro foglio di stile.<\/p>\n<p>PS: WordPress offre una funzione separata per restituire l&#8217;URL completo al tuo tema <code>style.css<\/code>: <code>get_stylesheet_uri()<\/code>. Ho usato l&#8217;altra funzione sopra in quanto \u00e8 pi\u00f9 utile familiarizzare con. Lo userai per tutti gli altri file che devi accodare.<\/p>\n<p>La funzione <code>wp_enqueue_style<\/code>accetta parametri pi\u00f9 utili, come le dipendenze (che altri file CSS devono essere caricati prima) e il numero di versione (utile per scopi di memorizzazione nella cache).<\/p>\n<p>Aggiorna il tuo frontend e vedi che il tuo foglio di stile \u00e8 caricato in <code>&lt;head&gt;<\/code>tag!<\/p>\n<p>Se sei uno di quelli che non vede l&#8217;ora di rendere il tuo tema pi\u00f9 carino durante la codifica, ecco la tua occasione. Ti incoraggio a iniziare a definire il tuo HTML, le classi e i wrapper e ad aggiungere un po&#8217; di stile nel tuo file <code>style.css<\/code>. Aggiungeremo pi\u00f9 contenuti che richiederanno uno stile man mano che andiamo avanti in questa serie di tutorial.<\/p>\n<h2>Aggiunta di script (nel modo giusto)<\/h2>\n<p>Diamo un&#8217;occhiata a come aggiungiamo javascript al nostro tema. \u00c8 fatto usando lo stesso gancio (quindi puoi metterlo tutto all&#8217;interno di una funzione). Ma per gli script utilizziamo una funzione leggermente diversa.<\/p>\n<p>Per accodare uno script, utilizzare <code>wp_enqueue_script()<\/code>. I parametri sono gli stessi di <code>wp_enqueue_style()<\/code>. Il primo \u00e8 l&#8217;handle univoco e il secondo \u00e8 il percorso dello script. Terzo (facoltativo) \u00e8 l&#8217;array di dipendenze. Come quarto parametro (opzionale) si imposta il numero di versione. E infine quinto (opzionale) definisci se lo script deve essere caricato o meno nel <code>&lt;head&gt;<\/code>tag o alla fine di <code>&lt;\/body&gt;<\/code>.<\/p>\n<p>WordPress viene fornito con una vasta gamma di librerie gi\u00e0 incluse. Non sono sempre tutti caricati, ma disponibili se ne hai bisogno. Se vuoi aggiungere uno script di libreria comune, controlla prima se <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_script\/#default-scripts-included-and-registered-by-wordpress\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress lo ha gi\u00e0<\/a>. Esempi sono jQuery, tutti i moduli dell&#8217;interfaccia utente di jQuery, Underscore e Backbone.<\/p>\n<p>Se aggiungi uno degli script inclusi in WordPress come dipendenza, non \u00e8 necessario accodare quello script! Facciamolo in pratica.<\/p>\n<p>Crea una cartella <code>assets<\/code>e al suo interno una sottocartella <code>js<\/code>nella nostra cartella del tema, quindi aggiungi un nuovo <code>main.js<\/code>file vuoto. Diciamo che questo script richiede la <code>jQuery<\/code>libreria, quindi lo impostiamo come dipendenza. Sappiamo che WordPress viene fornito con <code>jQuery<\/code>bundle e l&#8217;handle \u00e8 <code>jquery<\/code>. Accodaremo il nostro script in questo modo:<\/p>\n<pre><code>&lt;?php\nadd_action('wp_enqueue_scripts', 'wptutorial_enqueue_scripts');\nfunction wptutorial_enqueue_scripts() {\n    wp_enqueue_style('theme-main-style', get_stylesheet_directory_uri().'\/style.css');\n    wp_enqueue_script('theme-main-script', get_stylesheet_directory_uri().'\/assets\/js\/main.js', ['jquery']);\n}<\/code><\/pre>\n<p>Se aggiorni il frontend e controlli il tuo codice sorgente, dovresti vedere che il tuo script, <code>main.js<\/code>, \u00e8 stato aggiunto, ma anche quella <code>jQuery<\/code>libreria \u00e8 stata caricata. E <code>jQuery<\/code>viene caricato prima del tuo file!<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153528-61e50fc835cef.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153528-61e50fc835cef.png\" alt=\"Tutorial sul tema WordPress per principianti \u2013 Parte 6: Functions.php di un tema\" ><\/a><\/p>\n<p>Ora hai imparato come aggiungere stili e script. Per aggiungere pi\u00f9 file, aggiungi un <code>wp_enqueue_style()<\/code>o <code>wp_enqueue_script()<\/code>per ogni nuovo file.<\/p>\n<h2>Documentazione sui metodi utilizzati<\/h2>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_action\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">aggiungi_azione<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_scripts\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_enqueue_scripts<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_style\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_enqueue_style<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_stylesheet_directory_uri\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_stylesheet_directory_uri<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_script\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_enqueue_script<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In questa lezione impareremo come aggiungere il file functions.php del tema WordPress e come aggiungere i fogli di stile e gli script di un tema nel modo corretto.<\/p>\n","protected":false},"author":1,"featured_media":224083,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[896,896,720,835,1110,804,804,835,928,720,928,844,844,865,865],"tags":[1168],"class_list":["post-233442","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-sviluppatore","category-guida-per-principianti","category-n-a","category-php-6","category-soggetti","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/233442","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=233442"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/233442\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/224083"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=233442"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=233442"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=233442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}