{"id":167155,"date":"2025-06-09T09:00:00","date_gmt":"2025-06-09T09:00:00","guid":{"rendered":"https:\/\/gtechgroup.it\/blog\/wpcode-javascript-script-custom-sito\/"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T22:00:00","slug":"wpcode-javascript-script-custom-sito","status":"publish","type":"post","link":"https:\/\/gtechgroup.it\/blog\/wpcode-javascript-script-custom-sito\/","title":{"rendered":"WPCode e JavaScript: Aggiungere Script Custom al Tuo Sito"},"content":{"rendered":"<h2>JavaScript e WordPress: Un Binomio Essenziale<\/h2>\n<p>JavaScript &#232; il linguaggio che d&#224; vita alle pagine web. Mentre HTML definisce la struttura e CSS l&#8217;aspetto, JavaScript aggiunge <strong>interattivit&#224;<\/strong>: animazioni, validazioni dei form, caricamento dinamico dei contenuti, popup, slider, e molto altro. Nel contesto di WordPress, JavaScript &#232; fondamentale per widget di terze parti, script di tracciamento, personalizzazioni dell&#8217;interfaccia utente e integrazioni con servizi esterni.<\/p>\n<p>WPCode semplifica enormemente l&#8217;aggiunta di JavaScript al tuo sito WordPress, eliminando la necessit&#224; di modificare i file del tema o di creare un tema child solo per inserire qualche riga di script. In questo articolo vedremo come utilizzare WPCode per aggiungere script JavaScript personalizzati, con esempi pratici e best practice per evitare conflitti e problemi di prestazioni.<\/p>\n<h2>Differenze tra JavaScript nell&#8217;Header e nel Footer<\/h2>\n<p>La posizione in cui inserisci il tuo script JavaScript ha un impatto diretto sulle prestazioni e sul comportamento del sito:<\/p>\n<h3>JavaScript nell&#8217;Header<\/h3>\n<p>Gli script inseriti nell&#8217;header (<code>&lt;head&gt;<\/code>) vengono caricati ed eseguiti <strong>prima<\/strong> del rendering della pagina. Questo significa che:<\/p>\n<ul>\n<li>Il browser deve scaricare e processare lo script prima di mostrare il contenuto<\/li>\n<li>Lo script ha accesso al DOM solo dopo che questo &#232; stato completamente costruito (se usi <code>DOMContentLoaded<\/code>)<\/li>\n<li>&#200; la posizione ideale per script che devono essere disponibili immediatamente (GTM, consent manager)<\/li>\n<\/ul>\n<h3>JavaScript nel Footer<\/h3>\n<p>Gli script nel footer vengono caricati <strong>dopo<\/strong> tutto il contenuto HTML. Questo &#232; preferibile nella maggior parte dei casi perch&#233;:<\/p>\n<ul>\n<li>Non bloccano il rendering della pagina<\/li>\n<li>Il DOM &#232; gi&#224; completamente costruito quando lo script viene eseguito<\/li>\n<li>Le prestazioni percepite dall&#8217;utente sono migliori<\/li>\n<\/ul>\n<p><strong>Regola generale:<\/strong> inserisci gli script nel footer a meno che non ci sia un motivo specifico per metterli nell&#8217;header.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/gtechgroup.it\/blog\/wp-content\/uploads\/2026\/05\/wpc-02-headers.png\" alt=\"Inserimento di script JavaScript nella sezione Header e Footer di WPCode\" \/><\/p>\n<h2>Creare uno Snippet JavaScript con WPCode<\/h2>\n<p>Il processo per creare uno snippet JavaScript &#232; semplice:<\/p>\n<ol>\n<li>Vai su <strong>Code Snippets &rarr; Add Snippet &rarr; Add Your Custom Code<\/strong><\/li>\n<li>Assegna un titolo descrittivo<\/li>\n<li>Seleziona <strong>JavaScript Snippet<\/strong> come tipo di codice<\/li>\n<li>Scrivi il tuo codice JavaScript nell&#8217;editor &mdash; <strong>non<\/strong> includere i tag <code>&lt;script&gt;<\/code>, WPCode li aggiunge automaticamente<\/li>\n<li>Nella sezione Insertion, scegli la posizione (Site Wide Header o Site Wide Footer)<\/li>\n<li>Attiva e salva<\/li>\n<\/ol>\n<p><strong>Nota importante:<\/strong> se scegli il tipo &ldquo;JavaScript Snippet&rdquo;, WPCode aggiunge automaticamente i tag <code>&lt;script&gt;<\/code>. Se invece hai bisogno di inserire un tag script con attributi specifici (come <code>async<\/code>, <code>defer<\/code> o un <code>src<\/code> esterno), usa il tipo &ldquo;HTML Snippet&rdquo; e includi il tag <code>&lt;script&gt;<\/code> completo.<\/p>\n<h2>Esempio 1: Scroll to Top Button<\/h2>\n<p>Uno degli script pi&#249; richiesti &#232; il pulsante &ldquo;torna su&rdquo; che appare quando l&#8217;utente scorre la pagina verso il basso. Questo richiede due snippet: uno CSS e uno JavaScript.<\/p>\n<p><strong>Snippet CSS<\/strong> (tipo: CSS Snippet):<\/p>\n<pre><code>.scroll-to-top {\n    position: fixed;\n    bottom: 30px;\n    right: 30px;\n    width: 50px;\n    height: 50px;\n    background-color: #0073aa;\n    color: #ffffff;\n    border: none;\n    border-radius: 50%;\n    font-size: 24px;\n    cursor: pointer;\n    display: none;\n    z-index: 9999;\n    transition: opacity 0.3s ease, transform 0.3s ease;\n    box-shadow: 0 2px 10px rgba(0,0,0,0.2);\n}\n\n.scroll-to-top:hover {\n    background-color: #005a87;\n    transform: scale(1.1);\n}\n\n.scroll-to-top.visible {\n    display: block;\n}<\/code><\/pre>\n<p><strong>Snippet JavaScript<\/strong> (tipo: HTML Snippet, posizione: Footer):<\/p>\n<pre><code>&lt;button class=\"scroll-to-top\" id=\"scrollToTop\" aria-label=\"Torna su\"&gt;&amp;uarr;&lt;\/button&gt;\n&lt;script&gt;\n(function() {\n    var btn = document.getElementById(scrollToTop);\n\n    window.addEventListener(scroll, function() {\n        if (window.pageYOffset &gt; 300) {\n            btn.classList.add(visible);\n        } else {\n            btn.classList.remove(visible);\n        }\n    });\n\n    btn.addEventListener(click, function() {\n        window.scrollTo({ top: 0, behavior: smooth });\n    });\n})();\n&lt;\/script&gt;<\/code><\/pre>\n<h2>Esempio 2: Conto alla Rovescia per Promozioni<\/h2>\n<p>Un timer countdown che mostra il tempo rimanente per una promozione. Perfetto da combinare con la logica condizionale di WPCode per mostrarlo solo su pagine specifiche:<\/p>\n<pre><code>document.addEventListener(DOMContentLoaded, function() {\n    var countdown = document.getElementById(wpcode-countdown);\n    if (!countdown) return;\n\n    var endDate = new Date(2026-06-30T23:59:59).getTime();\n\n    function updateCountdown() {\n        var now = new Date().getTime();\n        var distance = endDate - now;\n\n        if (distance &lt; 0) {\n            countdown.innerHTML = &lt;p&gt;La promozione &#232; terminata!&lt;\/p&gt;;\n            return;\n        }\n\n        var days = Math.floor(distance \/ (1000 * 60 * 60 * 24));\n        var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) \/ (1000 * 60 * 60));\n        var minutes = Math.floor((distance % (1000 * 60 * 60)) \/ (1000 * 60));\n        var seconds = Math.floor((distance % (1000 * 60)) \/ 1000);\n\n        countdown.innerHTML = days + g  + hours + h  + minutes + m  + seconds + s;\n    }\n\n    updateCountdown();\n    setInterval(updateCountdown, 1000);\n});<\/code><\/pre>\n<p>Per usare questo script, crea anche uno snippet HTML che inserisce il contenitore <code>&lt;div id=&quot;wpcode-countdown&quot;&gt;&lt;\/div&gt;<\/code> nella posizione desiderata.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/gtechgroup.it\/blog\/wp-content\/uploads\/2026\/05\/wpc-01-snippets.png\" alt=\"Gestione degli snippet JavaScript in WPCode\" \/><\/p>\n<h2>Esempio 3: Table of Contents Automatico<\/h2>\n<p>Uno script che genera automaticamente un indice dei contenuti basato sui titoli H2 e H3 presenti nell&#8217;articolo:<\/p>\n<pre><code>document.addEventListener(DOMContentLoaded, function() {\n    var content = document.querySelector(.entry-content);\n    if (!content) return;\n\n    var headings = content.querySelectorAll(h2, h3);\n    if (headings.length &lt; 3) return;\n\n    var toc = document.createElement(div);\n    toc.className = wpcode-toc;\n    toc.innerHTML = &lt;h4&gt;Indice dei Contenuti&lt;\/h4&gt;;\n\n    var list = document.createElement(ul);\n\n    headings.forEach(function(heading, index) {\n        var id = toc- + index;\n        heading.id = id;\n\n        var li = document.createElement(li);\n        li.className = heading.tagName === H3 ? toc-sub : ;\n\n        var a = document.createElement(a);\n        a.href = # + id;\n        a.textContent = heading.textContent;\n        a.addEventListener(click, function(e) {\n            e.preventDefault();\n            heading.scrollIntoView({ behavior: smooth });\n        });\n\n        li.appendChild(a);\n        list.appendChild(li);\n    });\n\n    toc.appendChild(list);\n    content.insertBefore(toc, content.firstChild);\n});<\/code><\/pre>\n<p>Questo script &#232; particolarmente utile per articoli lunghi. Usa la logica condizionale di WPCode per caricarlo solo sui post del blog.<\/p>\n<h2>Esempio 4: Sticky Header<\/h2>\n<p>Un header che rimane fisso in cima alla pagina quando l&#8217;utente scorre verso il basso:<\/p>\n<pre><code>document.addEventListener(DOMContentLoaded, function() {\n    var header = document.querySelector(.site-header);\n    if (!header) return;\n\n    var headerHeight = header.offsetHeight;\n    var lastScroll = 0;\n\n    window.addEventListener(scroll, function() {\n        var currentScroll = window.pageYOffset;\n\n        if (currentScroll &gt; headerHeight) {\n            header.classList.add(header-sticky);\n\n            if (currentScroll &gt; lastScroll) {\n                header.classList.add(header-hidden);\n            } else {\n                header.classList.remove(header-hidden);\n            }\n        } else {\n            header.classList.remove(header-sticky);\n            header.classList.remove(header-hidden);\n        }\n\n        lastScroll = currentScroll;\n    });\n});<\/code><\/pre>\n<p>Combina questo con uno snippet CSS per gli stili dell&#8217;header sticky (posizione fissa, ombra, transizioni).<\/p>\n<h2>Esempio 5: Validazione Form Personalizzata<\/h2>\n<p>Se il tuo tema o plugin di form non offre una validazione sufficientemente chiara, puoi aggiungerne una personalizzata:<\/p>\n<pre><code>document.addEventListener(DOMContentLoaded, function() {\n    var forms = document.querySelectorAll(.wpcf7-form, .wpforms-form);\n\n    forms.forEach(function(form) {\n        form.addEventListener(submit, function(e) {\n            var email = form.querySelector(input[type=\"email\"]);\n            var tel = form.querySelector(input[type=\"tel\"]);\n            var valid = true;\n\n            if (email &amp;&amp; email.value) {\n                var emailRegex = \/^[^s@]+@[^s@]+.[^s@]+$\/;\n                if (!emailRegex.test(email.value)) {\n                    email.style.borderColor = #e94560;\n                    valid = false;\n                } else {\n                    email.style.borderColor = ;\n                }\n            }\n\n            if (tel &amp;&amp; tel.value) {\n                var telClean = tel.value.replace(\/[s-+()]\/g, );\n                if (telClean.length &lt; 9 || telClean.length &gt; 15) {\n                    tel.style.borderColor = #e94560;\n                    valid = false;\n                } else {\n                    tel.style.borderColor = ;\n                }\n            }\n\n            if (!valid) {\n                e.preventDefault();\n            }\n        });\n    });\n});<\/code><\/pre>\n<h2>Lavorare con jQuery in WordPress<\/h2>\n<p>WordPress include jQuery, ma lo carica in modalit&#224; &ldquo;noConflict&rdquo;. Questo significa che il simbolo <code>$<\/code> non &#232; disponibile per impostazione predefinita. Se il tuo script usa jQuery, devi racchiuderlo in una funzione wrapper:<\/p>\n<pre><code>(function($) {\n    $(document).ready(function() {\n        \/\/ Il tuo codice jQuery qui\n        $(.my-element).fadeIn();\n    });\n})(jQuery);<\/code><\/pre>\n<p>Tuttavia, per script moderni &#232; consigliabile usare JavaScript nativo (vanilla JS) invece di jQuery. Il JavaScript moderno offre API equivalenti (<code>document.querySelector<\/code>, <code>addEventListener<\/code>, <code>fetch<\/code>) che non richiedono librerie aggiuntive e sono pi&#249; performanti.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/gtechgroup.it\/blog\/wp-content\/uploads\/2026\/05\/wc-06-settings.png\" alt=\"Configurazione avanzata degli script JavaScript in WPCode\" \/><\/p>\n<h2>Evitare Conflitti JavaScript<\/h2>\n<p>Uno dei problemi pi&#249; comuni con gli script personalizzati &#232; il conflitto con altri script gi&#224; presenti nel sito. Ecco come prevenirli:<\/p>\n<h3>1. Usa IIFE (Immediately Invoked Function Expression)<\/h3>\n<p>Racchiudi sempre il tuo codice in una IIFE per evitare che le variabili inquinino lo scope globale:<\/p>\n<pre><code>(function() {\n    \/\/ Il tuo codice qui\n    var myVariable = valore; \/\/ Non accessibile fuori dalla funzione\n})();<\/code><\/pre>\n<h3>2. Controlla l&#8217;Esistenza degli Elementi<\/h3>\n<p>Prima di manipolare un elemento DOM, verifica sempre che esista:<\/p>\n<pre><code>var element = document.getElementById(my-element);\nif (element) {\n    \/\/ Manipola l&#8217;elemento solo se esiste\n}<\/code><\/pre>\n<h3>3. Usa DOMContentLoaded<\/h3>\n<p>Per script che interagiscono con il DOM, attendi sempre che il documento sia completamente caricato:<\/p>\n<pre><code>document.addEventListener(DOMContentLoaded, function() {\n    \/\/ Il DOM &#232; pronto\n});<\/code><\/pre>\n<h3>4. Gestisci gli Errori<\/h3>\n<p>Usa try-catch per gestire errori potenziali senza bloccare altri script:<\/p>\n<pre><code>try {\n    \/\/ Codice che potrebbe generare un errore\n} catch (error) {\n    console.error(WPCode snippet error:, error);\n}<\/code><\/pre>\n<h2>Debug degli Script JavaScript<\/h2>\n<p>Quando uno script non funziona come previsto, ecco come fare debug:<\/p>\n<ul>\n<li><strong>Console del browser<\/strong> &mdash; apri gli strumenti sviluppatore (F12) e controlla la tab Console per errori JavaScript<\/li>\n<li><strong>console.log()<\/strong> &mdash; aggiungi istruzioni <code>console.log()<\/code> nel tuo script per verificare i valori delle variabili<\/li>\n<li><strong>Breakpoint<\/strong> &mdash; usa la tab Sources degli strumenti sviluppatore per impostare breakpoint e analizzare l&#8217;esecuzione passo per passo<\/li>\n<li><strong>Network tab<\/strong> &mdash; verifica che le risorse esterne (CDN, API) vengano caricate correttamente<\/li>\n<\/ul>\n<h2>Prestazioni e Best Practice<\/h2>\n<ul>\n<li><strong>Posiziona nel footer<\/strong> &mdash; inserisci gli script nel footer quando possibile<\/li>\n<li><strong>Minimizza il codice<\/strong> &mdash; rimuovi commenti e spazi superflui per script in produzione<\/li>\n<li><strong>Usa logica condizionale<\/strong> &mdash; carica gli script solo dove servono<\/li>\n<li><strong>Preferisci vanilla JS<\/strong> &mdash; evita jQuery quando il JavaScript nativo pu&#242; fare lo stesso lavoro<\/li>\n<li><strong>Evita DOM manipulation pesante<\/strong> &mdash; le operazioni frequenti sul DOM rallentano la pagina<\/li>\n<li><strong>Usa requestAnimationFrame<\/strong> &mdash; per animazioni fluide, usa <code>requestAnimationFrame<\/code> invece di <code>setInterval<\/code><\/li>\n<\/ul>\n<h2>Conclusioni<\/h2>\n<p>WPCode rende l&#8217;aggiunta di script JavaScript personalizzati a WordPress semplice e sicura. Che tu debba aggiungere un pulsante &ldquo;torna su&rdquo;, un conto alla rovescia per una promozione, un indice dei contenuti automatico o qualsiasi altra funzionalit&#224; interattiva, WPCode ti offre gli strumenti per farlo senza modificare i file del tema.<\/p>\n<p>Ricorda sempre di testare i tuoi script, gestire gli errori e seguire le best practice per le prestazioni. Un sito veloce e privo di errori JavaScript offre un&#8217;esperienza utente migliore e pu&#242; influire positivamente anche sul posizionamento nei motori di ricerca.<\/p>\n<div style=\"border:2px solid #0073aa; border-radius:8px; padding:20px; margin:30px 0; background:#f0f6fc;\">\n<h3 style=\"margin-top:0;\">&#128218; Leggi anche gli altri articoli della serie WPCode<\/h3>\n<ul>\n<li><a href=\"https:\/\/gtechgroup.it\/blog\/installare-configurare-wpcode-wordpress\/\">Come Installare e Configurare WPCode su WordPress<\/a><\/li>\n<li><a href=\"https:\/\/gtechgroup.it\/blog\/wpcode-aggiungere-codice-header-footer\/\">WPCode: Aggiungere Codice a Header e Footer di WordPress<\/a><\/li>\n<li><a href=\"https:\/\/gtechgroup.it\/blog\/wpcode-creare-snippet-codice-personalizzati\/\">Creare Snippet di Codice Personalizzati con WPCode<\/a><\/li>\n<li><a href=\"https:\/\/gtechgroup.it\/blog\/wpcode-aggiungere-css-personalizzato-wordpress\/\">WPCode: Aggiungere CSS Personalizzato a WordPress<\/a><\/li>\n<li><a href=\"https:\/\/gtechgroup.it\/blog\/wpcode-vs-code-snippets-vs-functions-php\/\">WPCode vs Code Snippets vs Functions.php: Confronto<\/a><\/li>\n<\/ul>\n<\/div>\n<p>Hai bisogno di sviluppare funzionalit&#224; JavaScript personalizzate per il tuo sito WordPress? <a href=\"https:\/\/gtechgroup.it\/contatti\/\">Contatta il team di G Tech Group<\/a>. I nostri sviluppatori possono creare script su misura per qualsiasi esigenza, dall&#8217;interattivit&#224; avanzata alle integrazioni con API esterne e servizi di terze parti.<\/p>\n<h3>Migliora il Tuo Sito WordPress<\/h3>\n<p>Scopri le nostre guide complete sugli altri plugin essenziali per WordPress:<\/p>\n<ul>\n<li><a href=\"https:\/\/gtechgroup.it\/blog\/come-installare-elementor-wordpress-guida-principianti\/\">Come Installare Elementor su WordPress<\/a><\/li>\n<li><a href=\"https:\/\/gtechgroup.it\/blog\/wp-rocket-installare-configurare-wordpress\/\">Come Installare e Configurare WP Rocket<\/a><\/li>\n<li><a href=\"https:\/\/gtechgroup.it\/blog\/come-installare-configurare-seopress-wordpress-guida\/\">Come Installare e Configurare SEOPress<\/a><\/li>\n<li><a href=\"https:\/\/gtechgroup.it\/blog\/installare-attivare-updraftplus-wordpress\/\">Come Installare e Configurare UpdraftPlus<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>JavaScript e WordPress: Un Binomio Essenziale JavaScript &#232; il linguaggio che d&#224; vita alle pagine web. Mentre HTML definisce la struttura e CSS l&#8217;aspetto, JavaScript&hellip;<\/p>\n","protected":false},"author":0,"featured_media":167110,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"WPCode: JavaScript Custom per WordPress | Guida","_seopress_titles_desc":"Come aggiungere JavaScript custom a WordPress con WPCode. Event listener, AJAX, DOM e performance.","_seopress_robots_index":"","footnotes":""},"categories":[1],"tags":[3533,2937,3281,3532,492,3525],"class_list":["post-167155","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-senza-categoria","tag-custom","tag-frontend","tag-javascript","tag-script","tag-wordpress","tag-wpcode"],"_links":{"self":[{"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/posts\/167155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/comments?post=167155"}],"version-history":[{"count":0,"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/posts\/167155\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/media\/167110"}],"wp:attachment":[{"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/media?parent=167155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/categories?post=167155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/tags?post=167155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}