{"id":82602,"date":"2025-11-20T13:59:14","date_gmt":"2025-11-20T12:59:14","guid":{"rendered":"https:\/\/kinqsta.com\/it\/?p=82602&#038;preview=true&#038;preview_id=82602"},"modified":"2025-11-24T17:03:41","modified_gmt":"2025-11-24T16:03:41","slug":"sviluppo-wordpress-radicle","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/","title":{"rendered":"Sviluppo di WordPress con Radicle: distribuzione su Kinsta"},"content":{"rendered":"<p>Lo sviluppo moderno di WordPress si \u00e8 evoluto al di l\u00e0 delle configurazioni manuali e dei flussi di lavoro di distribuzione incoerenti. Radicle combina <a href=\"https:\/\/roots.io\/\" target=\"_blank\" rel=\"noopener noreferrer\">Roots<\/a> e altri strumenti di sviluppo WordPress, come <a href=\"https:\/\/roots.io\/bedrock\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bedrock<\/a>, <a href=\"https:\/\/roots.io\/sage\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sage<\/a> e <a href=\"https:\/\/roots.io\/acorn\/\" target=\"_blank\" rel=\"noopener noreferrer\">Acorn<\/a>, in un unico stack iniziale.<\/p>\n<p>Questa integrazione permette di avere l&#8217;esperienza di sviluppo di Laravel direttamente in WordPress.<\/p>\n<p>Inoltre, l&#8217;installazione di Radicle su Kinsta offre un ambiente di hosting che supporta i requisiti tecnici richiesti da questo stack. Potrai ottenere l&#8217;<a href=\"https:\/\/kinqsta.com\/it\/docs\/hosting-wordpress\/connessione-ssh\/\">accesso SSH<\/a>, l&#8217;<a href=\"https:\/\/kinqsta.com\/it\/docs\/hosting-wordpress\/gestione-sito\/wp-cli-wordpress\/\">integrazione WP-CLI<\/a> e la possibilit\u00e0 di <a href=\"https:\/\/kinqsta.com\/it\/changelog\/webroot-personalizzati\/\">configurare la root del tuo documento<\/a>.<\/p>\n<p>Questa guida illustra il processo di configurazione e le fasi di deployment necessarie per far funzionare Radicle sull&#8217;infrastruttura di Kinsta.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Radicle e i suoi componenti<\/h2>\n<p><a href=\"https:\/\/roots.io\/radicle\/\" target=\"_blank\" rel=\"noopener noreferrer\">Radicle<\/a> combina tre progetti Roots distinti in un ambiente di sviluppo integrato:<\/p>\n<ul>\n<li><strong>Bedrock<\/strong> fornisce le fondamenta con la sua struttura di cartelle migliorata e la gestione delle dipendenze basata su Composer.<\/li>\n<li><strong>Sage<\/strong> gestisce lo sviluppo di temi con l&#8217;integrazione di <a href=\"https:\/\/kinqsta.com\/it\/blog\/tailwind-css\/\">Tailwind CSS<\/a> e <a href=\"https:\/\/kinqsta.com\/it\/blog\/vite-vs-webpack\/\">Vite<\/a> per la creazione di risorse.<\/li>\n<li><strong>Acorn<\/strong> fa da ponte tra WordPress e <a href=\"https:\/\/kinqsta.com\/it\/blog\/framework-laravel\/\">Laravel<\/a> inserendo nei progetti WordPress i <a href=\"https:\/\/kinqsta.com\/it\/blog\/laravel-blade\/\">template Blade<\/a>, le migrazioni, il routing e molto altro ancora.<\/li>\n<\/ul>\n<p>Questo tipo di ambiente di sviluppo permette di lavorare direttamente dalla root del progetto, piuttosto che all&#8217;interno delle tipiche directory dei temi. I template si trovano in <code>resources\/views\/<\/code> nella root del progetto, mentre la configurazione avviene tramite file specifici dell&#8217;ambiente nella cartella <code>bedrock<\/code>.<\/p>\n<p><a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Composer<\/a> gestisce il core di WordPress, i plugin e le dipendenze personalizzate attraverso un unico file <code>composer.json<\/code>. Lo stack richiede PHP 8.3 o superiore, insieme a specifiche estensioni. Composer serve anche per la gestione delle dipendenze e di WP-CLI per le operazioni da riga di comando.<\/p>\n<h3>Radicle vs WordPress tradizionale<\/h3>\n<p>Le installazioni standard di WordPress (cio\u00e8 quelle con tutto all&#8217;interno della directory <code>wp-content<\/code>) possono complicare il controllo delle versioni e rendere difficile mantenere installazioni coerenti in ambienti diversi.<\/p>\n<p>Tuttavia, Radicle ristruttura questo aspetto in modo da poter controllare la versione del codice dell&#8217;applicazione senza tenere traccia dei file principali di WordPress o dei media caricati:<\/p>\n<ul>\n<li>Il core di WordPress si trova nella directory <code>public\/wp<\/code>, separata dal codice dell&#8217;applicazione.<\/li>\n<li>La cartella <code>public\/content<\/code> sostituisce <code>wp-content<\/code> e il codice del tema personalizzato si trova nella root del progetto.<\/li>\n<\/ul>\n<p>La configurazione in stile Laravel utilizza un file <code>.env<\/code> piuttosto che incorporare le credenziali del database e le chiavi di sicurezza nei file di configurazione. Si possono <a href=\"https:\/\/kinqsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/\">definire impostazioni diverse<\/a> per gli ambienti di sviluppo, staging e produzione attraverso file di configurazione separati in <code>bedrock\/environments\/<\/code>.<\/p>\n<p>La strategia di controllo delle versioni ne beneficia perch\u00e9 si tiene traccia solo del codice dell&#8217;applicazione e della configurazione. Gli aggiornamenti del core di WordPress avvengono tramite Composer, i plugin servono come dipendenze e le modifiche ai temi sono archiviate nel repository.<\/p>\n<h2>Configurare Radicle per Kinsta<\/h2>\n<p>Quando si distribuisce su Kinsta, \u00e8 necessaria l&#8217;<a href=\"https:\/\/kinqsta.com\/it\/docs\/hosting-wordpress\/connessione-ssh\/\">autenticazione con chiave SSH<\/a>, disponibile attraverso la dashboard MyKinsta.<\/p>\n<p>Individua i dettagli di accesso SFTP\/SSH nella sezione <strong>Info<\/strong> del sito e aggiungi la tua chiave SSH pubblica se non l&#8217;hai ancora fatto.<\/p>\n<figure id=\"attachment_200394\" aria-describedby=\"caption-attachment-200394\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-200394\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2025\/10\/ssh-keys.png\" alt=\"La pagina Informazioni MyKinsta che mostra la sezione Utente SFTP\/SSH principale con le opzioni per impostare i metodi di autenticazione corretti.\" width=\"1200\" height=\"638\"><figcaption id=\"caption-attachment-200394\" class=\"wp-caption-text\">Le informazioni SSH\/SFTP in MyKinsta.<\/figcaption><\/figure>\n<p>L&#8217;infrastruttura di Kinsta \u00e8 in linea con i requisiti tecnici di Radicle. Esegue <a href=\"https:\/\/kinqsta.com\/it\/blog\/php-8-3\/\">PHP 8.3<\/a>, include Composer per la gestione delle dipendenze e ha <a href=\"https:\/\/kinqsta.com\/it\/blog\/wp-cli\/\">WP-CLI<\/a> preinstallato, in modo da poter gestire WordPress direttamente dalla riga di comando.<\/p>\n<p>A differenza di una configurazione tradizionale di WordPress, Radicle utilizza una struttura di directory basata sulle release. Ogni distribuzione crea una cartella di release con data e ora, mentre un link simbolico a <code data-start=\"2609\" data-end=\"2618\">current<\/code> punta alla versione attiva. La root web dell&#8217;applicazione deve essere impostata su <code>public\/current\/public<\/code>.<\/p>\n<p>Successivamente, configura le variabili d&#8217;ambiente. Copia il file <code data-start=\"2808\" data-end=\"2822\">.env.example<\/code> nella root del progetto Radicle e rinominalo in <code data-start=\"2874\" data-end=\"2880\">.env<\/code>. Poi, aggiungi i <a href=\"https:\/\/kinqsta.com\/it\/docs\/hosting-wordpress\/gestione-database\/accesso-database-wordpress\/\">dettagli del database<\/a> e le impostazioni dell&#8217;ambiente:<\/p>\n<pre><code class=\"language-bash\">DB_NAME='your_database_name'\nDB_USER='your_database_user'\nDB_PASSWORD='your_database_password'\nDB_HOST='your_database_host'\nWP_ENV='staging'\nWP_HOME='https:\/\/{kinsta-staging-url}'\nWP_SITEURL=\"${WP_HOME}\/wp\"\n<\/code><\/pre>\n<p>Radicle installa il core di WordPress all&#8217;interno di una sottodirectory <code data-start=\"3213\" data-end=\"3218\">\/wp<\/code>. In questo modo i file del core sono separati dal codice dell&#8217;applicazione personalizzata, favorendo una struttura pi\u00f9 pulita e controllata dalle versioni.<\/p>\n<h3>Configurazione dello staging<\/h3>\n<p data-start=\"2099\" data-end=\"2431\">La cartella di configurazione si trova nella root del progetto Radicle, accanto alle cartelle <code data-start=\"2188\" data-end=\"2196\">public<\/code> e <code data-start=\"2201\" data-end=\"2212\">resources<\/code>. Apri <code data-start=\"2227\" data-end=\"2261\">bedrock\/environments\/staging.php<\/code> per definire le impostazioni specifiche dell&#8217;ambiente di staging. Questo file sovrascrive i valori di <code data-start=\"2351\" data-end=\"2376\">bedrock\/application.php<\/code> ogni volta che il file <code data-start=\"2390\" data-end=\"2396\">.env<\/code> imposta <code data-start=\"2407\" data-end=\"2415\">WP_ENV<\/code> su <code data-start=\"2419\" data-end=\"2428\">staging<\/code>.<\/p>\n<p data-start=\"2436\" data-end=\"2530\">Imposta l&#8217;URL del <a href=\"https:\/\/kinqsta.com\/it\/docs\/hosting-wordpress\/ambienti-di-staging\/\">sito di staging<\/a> aggiungendo le seguenti costanti all&#8217;inizio di <code data-start=\"2514\" data-end=\"2527\">staging.php<\/code>:<\/p>\n<pre><code class=\"language-php\">&lt;?php\ndefine('WP_HOME', 'https:\/\/staging-url');\ndefine('WP_SITEURL', WP_HOME . '\/wp');\n<\/code><\/pre>\n<p>L&#8217;URL di staging segue lo schema della sezione <strong>Ambienti<\/strong> del sito quando selezioni l&#8217;ambiente di staging.<\/p>\n<figure id=\"attachment_200395\" aria-describedby=\"caption-attachment-200395\" style=\"width: 1200px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-200395\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2025\/10\/site-environments.png\" alt=\"Il pannello di controllo MyKinsta mostra il menu a tendina degli ambienti del sito, che presenta sia l'ambiente live che quello di staging disponibili per la selezione.\" width=\"1200\" height=\"423\"><figcaption id=\"caption-attachment-200395\" class=\"wp-caption-text\">Trovare l&#8217;URL dell&#8217;ambiente di staging in MyKinsta.<\/figcaption><\/figure>\n<p>Il percorso di distribuzione determina la posizione dei file sul server Kinsta. In MyKinsta, nota il percorso alla voce <strong>Dettagli ambiente<\/strong>. Questo percorso \u00e8 in genere <code>\/www\/sitename\/public<\/code> e rappresenta la destinazione del deployment. Lo script di distribuzione sincronizza i file in questo percorso, creando una struttura come <code>\/www\/sitename\/public\/releases\/timestamp<\/code> per ogni distribuzione, con <code>\/www\/sitename\/public\/current<\/code> che fa da link simbolico alla versione attiva.<\/p>\n<p>\u00c8 una buona idea abilitare la <a href=\"https:\/\/kinqsta.com\/it\/blog\/wordpress-debug\/\">modalit\u00e0 di debug<\/a> per l&#8217;ambiente di staging all&#8217;interno di <code>bedrock\/environments\/staging.php<\/code>. Inoltre, copia e imposta le credenziali del database per l&#8217;ambiente di staging all&#8217;interno del file locale <code>.env<\/code> (che non dovrebbe essere impegnato nel controllo di versione). In alternativa, configura queste credenziali come variabili d&#8217;ambiente sul server di distribuzione. Kinsta generer\u00e0 credenziali uniche per ogni ambiente.<\/p>\n<h3>Configurazione di produzione<\/h3>\n<p>Una volta passato all&#8217;ambiente live dal menu a tendina della dashboard MyKinsta, il processo di configurazione rispecchier\u00e0 quello dell&#8217;ambiente di staging ma utilizzer\u00e0 valori specifici per la produzione e impostazioni di sicurezza pi\u00f9 rigide.<\/p>\n<p>A tal fine, apri <code>bedrock\/environments\/production.php<\/code> nella directory principale del progetto <code>bedrock<\/code> e modifica l&#8217;URL di produzione:<\/p>\n<pre><code class=\"language-php\">&lt;?php\ndefine('WP_HOME', 'https:\/\/yourdomain.com');\ndefine('WP_SITEURL', WP_HOME . '\/wp');\n<\/code><\/pre>\n<p>La gestione degli errori in produzione sar\u00e0 diversa da quella in staging. La differenza principale consiste nel disabilitare le visualizzazioni di debug mantenendo attivo il log degli errori:<\/p>\n<pre><code class=\"language-php\">define('WP_DEBUG', false);\ndefine('WP_DEBUG_LOG', true);\ndefine('WP_DEBUG_DISPLAY', false);\ndefine('SCRIPT_DEBUG', false); <\/code><\/pre>\n<p>Inoltre, copia le credenziali del database di produzione dalla sezione <strong>Accesso al database<\/strong> di MyKinsta quando sei nell&#8217;ambiente live. Queste credenziali di solito sono diverse da quelle dello staging. Tuttavia, i percorsi di distribuzione in produzione seguono lo stesso schema di quelli di staging, ma puntano alla directory dell&#8217;ambiente live. Il percorso all&#8217;interno dei <strong>dettagli dell&#8217;ambiente <\/strong>di MyKinsta avr\u00e0 probabilmente un URL diverso (ma simile). Il tuo script di distribuzione punter\u00e0 a questo percorso per i rilasci di produzione.<\/p>\n<h3>Modificare le attivit\u00e0 di distribuzione<\/h3>\n<p>La distribuzione predefinita di Radicle presuppone un controllo del server che Kinsta non fornisce attraverso l&#8217;hosting gestito. Per questo motivo, \u00e8 necessario rimuovere tutti i task di distribuzione che tentano di gestire i servizi del server.<\/p>\n<p>Se stai usando <a href=\"https:\/\/roots.io\/trellis\/\">Trellis<\/a> (lo strumento di distribuzione predefinito di Radicle), modifica <code>trellis\/roles\/deploy\/hooks\/finalize-after.yml<\/code> ed elimina completamente il task <code>Reload php-fpm<\/code>. Kinsta gestisce il riavvio automatico di PHP-FPM quando rileva delle modifiche ai file.<\/p>\n<p>Inoltre, lo svuotamento della cache avviene tramite <a href=\"https:\/\/kinqsta.com\/it\/blog\/come-creare-una-pipeline-ci-cd\/\">l&#8217;API di Kinsta<\/a> anzich\u00e9 tramite i comandi del server, quindi dovrai sostituire qualsiasi cancellazione della cache basata sul server con una richiesta HTTP all&#8217;endpoint di cancellazione della cache di Kinsta. Puoi aggiungere questo task all&#8217;hook di finalizzazione dell&#8217;installazione una volta <a href=\"https:\/\/kinqsta.com\/it\/blog\/chiave-api-kinsta\/\">impostata una chiave API<\/a>:<\/p>\n<pre><code class=\"language-php\">- name: Clear Kinsta cache\nuri:\n  url: \"{{ site_env.wp_home }}\/kinsta-clear-cache-endpoint\/\"\n  method: GET\n<\/code><\/pre>\n<p>Ogni sito ha un endpoint unico per la sicurezza, che puoi ottenere dal team di supporto di Kinsta.<\/p>\n<p>La compilazione delle risorse viene eseguita prima della distribuzione, non sul server. La tua macchina di sviluppo locale o la <a href=\"https:\/\/kinqsta.com\/it\/blog\/come-creare-una-pipeline-ci-cd\/\">pipeline CI\/CD<\/a> esegue <code>npm run build<\/code> per compilare JavaScript e CSS nella cartella <code>public\/build<\/code>. Queste risorse compilate verranno distribuite insieme ai file PHP.<\/p>\n<p>L&#8217;installazione delle dipendenze di Composer avviene dopo la sincronizzazione dei file utilizzando SSH per eseguire quanto segue:<\/p>\n<pre><code class=\"language-bash\">cd \/www\/sitename\/public\/current\ncomposer install --no-dev --optimize-autoloader --no-interaction\n<\/code><\/pre>\n<p>Il flag <code>--no-dev<\/code> esclude le dipendenze di sviluppo come i framework di test e gli strumenti di debug. Il flag <code>--optimize-autoloader<\/code> costruisce mappe di classi per un caricamento automatico pi\u00f9 rapido, riducendo l&#8217;overhead della localizzazione dei file di classe durante le richieste.<\/p>\n<h2>Aggiungere il plugin Kinsta MU a Radicle<\/h2>\n<p>Il plugin Kinsta MU consente il caching di tutte le pagine, l&#8217;integrazione di CDN e la gestione della cache per il sito attraverso MyKinsta. A causa della struttura di directory non standard di Radicle, dovrai impostare alcune costanti di configurazione specifiche, anche se puoi aggiungere il <a href=\"https:\/\/kinqsta.com\/it\/docs\/hosting-wordpress\/plugin-kinsta-mu\/\">plugin Kinsta MU<\/a> a Radicle tramite Composer. Puoi aggiungere queste costanti al file <code>bedrock\/application.php<\/code> dopo aver installato il plugin:<\/p>\n<pre><code class=\"language-php\">\/**\n* Kinsta CDN fix for Radicle\/Bedrock structure\n*\/\n\ndefine('KINSTA_CDN_USERDIRS', 'app');\n\n\/**\n* Fix Kinsta MU Plugins URL path with Radicle\/Bedrock\n*\/\n\n$mu_plugins_url = Config::get('WP_CONTENT_URL') . '\/mu-plugins';\n\ndefine('KINSTAMU_CUSTOM_MUPLUGIN_URL', \"{$mu_plugins_url}\/kinsta-mu-plugins\");\n<\/code><\/pre>\n<p>La prima costante specifica la directory uploads nella struttura <code>app<\/code> di Bedrock. La seconda corregge i percorsi URL delle risorse del plugin in modo da caricare correttamente i file JavaScript e CSS.<\/p>\n<p>Una volta verificata l&#8217;installazione del plugin, puoi testare lo svuotamento della cache attraverso la dashboard di MyKinsta per confermare che il plugin comunica correttamente con l&#8217;infrastruttura di Kinsta.<\/p>\n<h2>Come impostare le distribuzioni automatiche<\/h2>\n<p><a href=\"https:\/\/kinqsta.com\/it\/blog\/distribuzione-continua-wordpress-github-actions\/\">GitHub Actions<\/a> \u00e8 un modo semplice per automatizzare le distribuzioni di Radicle su Kinsta. Ad esempio, puoi creare un file di workflow nel tuo repository all&#8217;indirizzo <code>.github\/workflows\/deploy.yml<\/code>. Questo flusso di lavoro si attiva in caso di push a branch specifici, che costruiscono le risorse e distribuiscono il codice nell&#8217;ambiente corrispondente.<\/p>\n<p>I segreti SSH memorizzati nel tuo repository GitHub consentiranno connessioni sicure ai server di Kinsta. A tal fine, aggiungi i segreti per la tua chiave privata SSH, l&#8217;host Kinsta, la porta SSH e il nome utente in GitHub.<\/p>\n<p>Uno script di distribuzione orchestra il processo di sincronizzazione dei file. In genere questo script utilizza <code>rsync<\/code> per trasferire i file in modo efficiente, invia solo i file modificati e mantiene i permessi corretti. Tuttavia, dovresti escludere i file di sviluppo come <code>node_modules<\/code>, <code>.git<\/code> e <code>.env<\/code> dalla distribuzione per mantenere pulito l&#8217;ambiente di produzione.<\/p>\n<p>Quando la sincronizzazione dei file sar\u00e0 andata a buon fine, si potranno eseguire le attivit\u00e0 di cancellazione e pulizia della cache. Il processo prevede che lo script di distribuzione faccia una richiesta all&#8217;<a href=\"https:\/\/api-docs.kinqsta.com\/tag\/WordPress-Site-Tools#operation\/clearSiteCache\">endpoint<\/a> di Kinsta per la <a href=\"https:\/\/api-docs.kinqsta.com\/tag\/WordPress-Site-Tools#operation\/clearSiteCache\">cancellazione della cache<\/a>, attenda la conferma e poi esegua i comandi di pulizia necessari.<\/p>\n<h3>Configurazione delle GitHub Actions<\/h3>\n<p>Puoi definire l&#8217;automazione del deployment all&#8217;interno della root del repository creando un file <code>.github\/workflows\/deploy.yml<\/code>. Questo file gestir\u00e0 la compilazione delle risorse, l&#8217;installazione delle dipendenze e la sincronizzazione dei file con Kinsta.<\/p>\n<p>Inizia con i trigger specifici per i branch che distribuiscono il branch di staging all&#8217;ambiente di staging e il branch <code>main<\/code> alla produzione:<\/p>\n<pre><code class=\"language-bash\">name: Deploy to Kinsta\non:\npush:\nbranches:\n  - staging\n  - main\njobs:\ndeploy:\nruns-on: ubuntu-latest\nsteps:\n  - name: Checkout code\n    uses: actions\/checkout@v3\n  - name: Setup Node.js\n    uses: actions\/setup-node@v3\n    with:\n      node-version: '22'\n  - name: Install dependencies and build assets\n    run: |\n      npm ci\n      npm run build\n<\/code><\/pre>\n<p>Le strategie a matrice gestiscono pi\u00f9 ambienti senza duplicare il codice del flusso di lavoro. Le variabili specifiche dell&#8217;ambiente che aggiungi possono cambiare in base al branch che ha attivato il flusso di lavoro:<\/p>\n<pre><code class=\"language-php\">strategy:\n  matrix:\n    include:\n      - branch: staging\n        ssh_host: ${{ secrets.KINSTA_STAGING_HOST }}\n        ssh_port: ${{ secrets.KINSTA_STAGING_PORT }}\n        ssh_user: ${{ secrets.KINSTA_STAGING_USER }}\n        deploy_path: \/www\/sitename_1\/public\n      - branch: main\n        ssh_host: ${{ secrets.KINSTA_PRODUCTION_HOST }}\n        ssh_port: ${{ secrets.KINSTA_PRODUCTION_PORT }}\n        ssh_user: ${{ secrets.KINSTA_PRODUCTION_USER }}\n        deploy_path: \/www\/sitename_2\/public\n<\/code><\/pre>\n<p>Le fasi di compilazione delle risorse creano file JavaScript e CSS ottimizzati prima della distribuzione. Il flusso di lavoro utilizza <code>npm ci<\/code> invece di <code>npm install<\/code> per ottenere build riproducibili basate sul tuo file <code>package-lock.json<\/code>. Il comando <code>npm run build<\/code> esegue lo script di compilazione di produzione definito in <code>package.json<\/code>, in genere eseguendo Vite o un altro bundler per compilare e minificare le risorse.<\/p>\n<p>A questo punto, puoi aggiungere l&#8217;installazione di Composer dopo le fasi di Node.js:<\/p>\n<pre><code class=\"language-php\">- name: Setup PHP\n  uses: server\/setup-php@v2\n  with:\n    php-version: '8.3'\n\n  - name: Install Composer dependencies\n    run: composer install --no-dev --optimize-autoloader --no-interaction\n<\/code><\/pre>\n<p>Il flusso di lavoro ha ora le risorse compilate e le dipendenze installate pronte per essere distribuite a Kinsta.<\/p>\n<h3>Dettagli dello script di distribuzione<\/h3>\n<p>La sincronizzazione dei file tramite <code>rsync<\/code> trasferisce solo i file modificati, riducendo al minimo i tempi di distribuzione. Per risolvere questo problema, aggiungi questo passaggio al workflow <a href=\"https:\/\/kinqsta.com\/it\/blog\/distribuzione-continua-wordpress-github-actions\/\">GitHub Actions<\/a> dopo aver creato le risorse:<\/p>\n<pre><code class=\"language-bash\">- name: Deploy to Kinsta via rsync\n  env:\n    SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}\n  run: |\n    mkdir -p ~\/.ssh\n    echo \"$SSH_PRIVATE_KEY\" &gt; ~\/.ssh\/deploy_key\n    chmod 600 ~\/.ssh\/deploy_key\n    rsync -avz --delete \n      --exclude='.git' \n      --exclude='node_modules' \n      --exclude='.env' \n      --exclude='trellis' \n      -e \"ssh -i ~\/.ssh\/deploy_key -p ${{ matrix.ssh_port }} -o StrictHostKeyChecking=no\" \n      .\/ ${{ matrix.ssh_user }}@${{ matrix.ssh_host }}:${{ matrix.deploy_path }}\/releases\/$(date +%Y%m%d%H%M%S)\/<\/code><\/pre>\n<p>I flag di rsync controllano il comportamento del trasferimento:<\/p>\n<ul>\n<li><code>-a<\/code> abilita la modalit\u00e0 archivio preservando i permessi e i timestamp.<\/li>\n<li><code>-v<\/code> fornisce un output verboso per il debug.<\/li>\n<li><code>-z<\/code> comprime i dati durante il trasferimento.<\/li>\n<\/ul>\n<p>Il flag <code>--delete<\/code> rimuove dal server i file che non esistono pi\u00f9 nel repository, in modo da mantenere pulito il tuo deployment.<\/p>\n<p>Gli schemi di esclusione impediscono il trasferimento di file non necessari. Inoltre, i metadati Git, le dipendenze di sviluppo, i file di ambiente e gli strumenti di distribuzione rimangono fuori dal server di produzione. La struttura delle directory di rilascio crea directory con data e ora per ogni distribuzione, in modo da consentire un rollback rapido modificando i symlink, o link simbolici.<\/p>\n<p>La gestione dei link simbolici collega i dati persistenti a ogni nuova release. Dopo aver sincronizzato i file, puoi accedere al server tramite SSH e creare dei symlink:<\/p>\n<pre><code class=\"language-bash\">- name: Create symlinks and update current\n  run: |\n    ssh -i ~\/.ssh\/deploy_key -p ${{ matrix.ssh_port }} -o StrictHostKeyChecking=no \n      ${{ matrix.ssh_user }}@${{ matrix.ssh_host }} &lt;&lt; 'EOF'\n    cd ${{ matrix.deploy_path }}\n    # Link shared .env file\n    ln -nfs ${{ matrix.deploy_path }}\/shared\/.env \n      ${{ matrix.deploy_path }}\/releases\/$(ls -t releases | head -1)\/.env\n    # Link uploads directory\n    ln -nfs ${{ matrix.deploy_path }}\/shared\/public\/content\/uploads \n      ${{ matrix.deploy_path }}\/releases\/$(ls -t releases | head -1)\/public\/content\/uploads\n    # Update current symlink atomically\n    ln -nfs ${{ matrix.deploy_path }}\/releases\/$(ls -t releases | head -1) \n      ${{ matrix.deploy_path }}\/current\n    EOF<\/code><\/pre>\n<p>Il file <code>.env<\/code> contiene la configurazione specifica dell&#8217;ambiente che persiste in tutte le distribuzioni. I caricamenti memorizzati al di fuori della directory delle release eviteranno la perdita dei file multimediali quando le vecchie release vengono cancellate. L&#8217;aggiornamento atomico dei symlink (<code>ln -nfs<\/code>) garantisce l&#8217;assenza di tempi di inattivit\u00e0 poich\u00e9 le richieste non si fermano mai su una release non ancora distribuita.<\/p>\n<p>Il Cleanup rimuove le vecchie release dopo il successo della distribuzione per mantenere solo le cinque pi\u00f9 recenti:<\/p>\n<pre><code class=\"language-bash\">- name: Clean up old releases\n  run: |\n    ssh -i ~\/.ssh\/deploy_key -p ${{ matrix.ssh_port }} -o StrictHostKeyChecking=no \n      ${{ matrix.ssh_user }}@${{ matrix.ssh_host }} &lt;&lt; 'EOF'\n    cd ${{ matrix.deploy_path }}\/releases\n    ls -t | tail -n +6 | xargs rm -rf\n    EOF<\/code><\/pre>\n<p>Questa strategia di pulizia permette di raggiungere un equilibrio tra l&#8217;utilizzo dello spazio su disco e la possibilit\u00e0 di rollback. Cinque release forniscono diversi punti di rollback evitando una crescita indefinita dello spazio di archiviazione.<\/p>\n<h2>Sommario<\/h2>\n<p>Radicle trasforma lo sviluppo di WordPress integrando la struttura migliorata di Bedrock, il moderno workflow dei temi di Sage e le funzionalit\u00e0 di Laravel di Acorn in un unico stack.<\/p>\n<p>La distribuzione su Kinsta richiede una configurazione che va oltre l&#8217;hosting WordPress standard, ma offre vantaggi in termini di sicurezza, manutenibilit\u00e0 ed esperienza degli sviluppatori che giustificano lo sforzo di configurazione.<\/p>\n<p>Quando sar\u00e0 il tuo momento per distribuire applicazioni WordPress moderne con fiducia, <a href=\"https:\/\/kinqsta.com\/it\/hosting-wordpress\/\">dai un&#8217;occhiata all&#8217;hosting WordPress gestito di Kinsta<\/a> e sperimenta un&#8217;infrastruttura di hosting che supporta il flusso di lavoro di sviluppo personalizzato che desideri.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lo sviluppo moderno di WordPress si \u00e8 evoluto al di l\u00e0 delle configurazioni manuali e dei flussi di lavoro di distribuzione incoerenti. Radicle combina Roots e &#8230;<\/p>\n","protected":false},"author":287,"featured_media":82603,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[25873],"class_list":["post-82602","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-sviluppo-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Sviluppo WordPress con Radicle: distribuzione su Kinsta<\/title>\n<meta name=\"description\" content=\"Lo sviluppo moderno di WordPress richiede strumenti e flussi di lavoro migliori. Ecco come configurare e distribuire Radicle su Kinsta!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sviluppo di WordPress con Radicle: distribuzione su Kinsta\" \/>\n<meta property=\"og:description\" content=\"Lo sviluppo moderno di WordPress richiede strumenti e flussi di lavoro migliori. Ecco come configurare e distribuire Radicle su Kinsta!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-20T12:59:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-24T16:03:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/11\/radicle.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1470\" \/>\n\t<meta property=\"og:image:height\" content=\"735\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Lo sviluppo moderno di WordPress richiede strumenti e flussi di lavoro migliori. Ecco come configurare e distribuire Radicle su Kinsta!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/11\/radicle.png\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinqsta.com\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Sviluppo di WordPress con Radicle: distribuzione su Kinsta\",\"datePublished\":\"2025-11-20T12:59:14+00:00\",\"dateModified\":\"2025-11-24T16:03:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/\"},\"wordCount\":2194,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/11\/radicle.png\",\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/\",\"url\":\"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/\",\"name\":\"Sviluppo WordPress con Radicle: distribuzione su Kinsta\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/11\/radicle.png\",\"datePublished\":\"2025-11-20T12:59:14+00:00\",\"dateModified\":\"2025-11-24T16:03:41+00:00\",\"description\":\"Lo sviluppo moderno di WordPress richiede strumenti e flussi di lavoro migliori. Ecco come configurare e distribuire Radicle su Kinsta!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/11\/radicle.png\",\"contentUrl\":\"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/11\/radicle.png\",\"width\":1470,\"height\":735},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sviluppo di WordPress\",\"item\":\"https:\/\/kinqsta.com\/it\/argomenti\/sviluppo-wordpress\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Sviluppo di WordPress con Radicle: distribuzione su Kinsta\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/it\/#website\",\"url\":\"https:\/\/kinqsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinqsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinqsta.com\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinqsta.com\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"caption\":\"Joel Olawanle\"},\"description\":\"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.\",\"sameAs\":[\"https:\/\/joelolawanle.com\/\",\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\",\"https:\/\/x.com\/olawanle_joel\",\"https:\/\/www.youtube.com\/@joelolawanle\"],\"gender\":\"male\",\"knowsAbout\":[\"JavaScript\",\"React\",\"Next.js\"],\"knowsLanguage\":[\"English\"],\"jobTitle\":\"Technical Editor\",\"worksFor\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/it\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Sviluppo WordPress con Radicle: distribuzione su Kinsta","description":"Lo sviluppo moderno di WordPress richiede strumenti e flussi di lavoro migliori. Ecco come configurare e distribuire Radicle su Kinsta!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/","og_locale":"it_IT","og_type":"article","og_title":"Sviluppo di WordPress con Radicle: distribuzione su Kinsta","og_description":"Lo sviluppo moderno di WordPress richiede strumenti e flussi di lavoro migliori. Ecco come configurare e distribuire Radicle su Kinsta!","og_url":"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2025-11-20T12:59:14+00:00","article_modified_time":"2025-11-24T16:03:41+00:00","og_image":[{"width":1470,"height":735,"url":"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/11\/radicle.png","type":"image\/png"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Lo sviluppo moderno di WordPress richiede strumenti e flussi di lavoro migliori. Ecco come configurare e distribuire Radicle su Kinsta!","twitter_image":"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/11\/radicle.png","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Joel Olawanle","Tempo di lettura stimato":"12 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinqsta.com\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Sviluppo di WordPress con Radicle: distribuzione su Kinsta","datePublished":"2025-11-20T12:59:14+00:00","dateModified":"2025-11-24T16:03:41+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/"},"wordCount":2194,"publisher":{"@id":"https:\/\/kinqsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/11\/radicle.png","inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/","url":"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/","name":"Sviluppo WordPress con Radicle: distribuzione su Kinsta","isPartOf":{"@id":"https:\/\/kinqsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/11\/radicle.png","datePublished":"2025-11-20T12:59:14+00:00","dateModified":"2025-11-24T16:03:41+00:00","description":"Lo sviluppo moderno di WordPress richiede strumenti e flussi di lavoro migliori. Ecco come configurare e distribuire Radicle su Kinsta!","breadcrumb":{"@id":"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/#primaryimage","url":"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/11\/radicle.png","contentUrl":"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2025\/11\/radicle.png","width":1470,"height":735},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/it\/blog\/sviluppo-wordpress-radicle\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Sviluppo di WordPress","item":"https:\/\/kinqsta.com\/it\/argomenti\/sviluppo-wordpress\/"},{"@type":"ListItem","position":3,"name":"Sviluppo di WordPress con Radicle: distribuzione su Kinsta"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/it\/#website","url":"https:\/\/kinqsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinqsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinqsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinqsta.com\/it\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinqsta.com\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","caption":"Joel Olawanle"},"description":"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.","sameAs":["https:\/\/joelolawanle.com\/","https:\/\/www.linkedin.com\/in\/olawanlejoel\/","https:\/\/x.com\/olawanle_joel","https:\/\/www.youtube.com\/@joelolawanle"],"gender":"male","knowsAbout":["JavaScript","React","Next.js"],"knowsLanguage":["English"],"jobTitle":"Technical Editor","worksFor":"Kinsta","url":"https:\/\/kinqsta.com\/it\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/posts\/82602","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/comments?post=82602"}],"version-history":[{"count":5,"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/posts\/82602\/revisions"}],"predecessor-version":[{"id":82624,"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/posts\/82602\/revisions\/82624"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82602\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82602\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82602\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82602\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82602\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82602\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82602\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82602\/translations\/es"},{"href":"https:\/\/kinqsta.com\/it\/wp-json\/kinsta\/v1\/posts\/82602\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/media\/82603"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/media?parent=82602"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/tags?post=82602"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/it\/wp-json\/wp\/v2\/topic?post=82602"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}