Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Astro: creare un sito WordPress headless

Creiamo un ambiente di sviluppo per la realizzazione del nostro sito Web basato su WordPress e il framework Astro
Creiamo un ambiente di sviluppo per la realizzazione del nostro sito Web basato su WordPress e il framework Astro
Link copiato negli appunti

In questa nuova parte della guida vedremo come creare un sito WordPress headless con Astro. Il codice che illustreremo è disponibile su GitHub.

Requisiti per il progetto e installazione di Astro

Questi sono i requisiti da verificare:

Una volta verificati i requisiti, si passa all'installazione di Astro:

npm create astro@latest

All'avvio dell'installazione, possiamo specificare la directory del progetto. Se siamo già nella directory dei nostri progetti, basterà digitare un nome e Astro creerà automaticamente la directory. Nel nostro caso la chiameremo wp-astro.

Una volta assegnato il nome al progetto, ci viene chiesto se includere i file di esempio, utilizzare il template del blog, oppure partire con un progetto vuoto. Trattandosi di un sito WordPress, scegliamo di installare il template del blog, che ci fornirà una struttura pronta per l'uso e parte del codice di cui avremo bisogno.

Creazione di un nuovo progetto Astro con l'installazione del template del blog

Creazione di un nuovo progetto Astro con l'installazione del template del blog

Estensioni per Visual Studio Code

Conclusa l'installazione, interrompiamo per il momento l'esecuzione del server con Ctrl + C e apriamo Visual Studio Code o un altro editor di codice. Se lavoriamo con VS Code, potremo utilizzare alcune estensioni che ci aiuteranno durante lo sviluppo. Possiamo installare le estensioni cercandole nel campo di ricerca della scheda "Extensions". Cominciamo con l'estensione per Astro.

L'estensione Astro per Visual Studio Code

L'estensione Astro per Visual Studio Code

Installiamo anche le estensioni Astro Snippets, che fornisce una serie di snippet per Astro, e Houston, sempre del team di Astro.

Un'altra estensione di Visual Studio Code utile per questa applicazione è Postman, che permette di testare le risposte dell'API direttamente nell'editor.

L'estensione Postman per Visual Studio Code

L'estensione Postman per Visual Studio Code

Apertura del progetto

Ora che abbiamo tutto il necessario, apriamo il progetto in Visual Studio Code. Dal menu "Terminale" lanciamo un nuovo terminale dei comandi, assicuriamoci di essere nella directory del progetto e avviamo il server:

npm run dev

Con il server in esecuzione, la home del progetto sarà disponibile da localhost, sulla porta 4321. Digitiamo quindi http://localhost:4321/ nel nostro browser e diamo un'occhiata al sito su cui lavoreremo.

La home page del blog di avvio

La home page del blog di avvio

Il progetto è in esecuzione. Prima di passare all'installazione di WordPress, vediamo come importare dati esterni in un'applicazione Astro.

Accedere ai dati con Astro

Astro supporta nativamente l'operatore await al livello superiore di un modulo (top-level await), senza ricorrere alla funzione async. Questo permette di utilizzare await insieme alla Fetch API per richiedere dati ad una fonte esterna in modo semplice e diretto.

Nella configurazione predefinita di Astro (SSG), le chiamate fetch vengono eseguite al tempo della build (modalità statica). Se si abilita il server-side rendering, le chiamate vengono eseguite al momento della richiesta. Optare per l'una o per l'altra modalità dipende dal tipo di progetto e dalla frequenza di aggiornamento dei contenuti esterni.

Gli esempi di questa guida sono basati sulla modalità statica. Per maggiori informazioni sul server site rendering, si legga la documentazione di Astro. Nell'esempio che segue, richiediamo una serie di dati ad una fonte esterna:

---
const response = await fetch('https://swapi.dev/api/planets');
const data = await response.json();
const planets = data.results;
---
<h1>I pianeti di Guerre Stellari</h1>
<ul>
  {planets.map(({name}) => (
    <li>{name}</li>
  ))}
</ul>

Riportiamo questo codice in un file src/pages/planets.astro, avviamo il server e digitiamo nella barra degli indirizzi del browser l'URL http://localhost:4321/planets. Vedremo l'elenco dei pianeti della saga di Star Wars.

Ora che sappiamo come accedere ai dati con Astro, passiamo all'installazione WordPress da cui prelevarli.

WordPress e la Rest API

Astro si presta ottimamente alla realizzazione del frontend di un'installazione WordPress headless. Sarà solo necessario che il sito esponga i contenuti tramite la Rest API, cosa che ora è di default su tutte le installazioni di WordPress.

Per approfondire i concetti base dei CMS headless e della Rest API di WordPress, rinviamo alle seguenti risorse:

Per gli esempi di questa guida, invieremo le nostre richieste alla Rest API del WordPress developer blog. Si tenga presente che per progetti più complessi potrebbe essere più efficiente utilizzare GraphQL, che permette di recuperare esclusivamente i dati di cui si ha bisogno.

La richiesta che invieremo alla Rest API è la seguente:

https://developer.wordpress.org/news/wp-json/wp/v2/posts
?per_page=21
&_fields=id,slug,date,title,excerpt,content,link,_links
&_embed=author,wp:featuredmedia,wp:term

Il parametro _fields stabilisce i campi che saranno compresi nella risposta. Avremo l'id del post, lo slug, la data (date), il titolo (title), il riassunto (excerpt), il contenuto (content), il link all'articolo e i _link alle risorse correlate. Qui abbiamo impostato anche il parametro facoltativo per_page, per ottenere un numero preciso di articoli. Se omesso, l'API restituisce un numero massimo di 10 articoli.

Il parametro _embed stabilisce che la risposta deve includere le risorse incorporate. In questo caso, saranno parte della risposta l'immagine di anteprima (wp:featuredmedia) e le tassonomie (wp:term).

Analisi della risposta della REST API di WordPress in Visual Studio Code

Analisi della risposta della REST API di WordPress in Visual Studio Code

Ora sappiamo come recuperare dati esterni in Astro e abbiamo l'URL della Rest API del sito WordPress. Nel prossimo capitolo cominceremo a scrivere il codice dell'applicazione.

Ti consigliamo anche