Il CMS che fa girare oltre il 40% del web: post, blocchi, temi, plugin, hook e database. Tutto quello che serve per capirlo e gestirlo — dal famoso install in 5 minuti all'hardening in produzione, senza il marketing.
"WordPress è roba da blogger" — sì, ed è anche il motore di metà internet. Facile da usare, facilissimo da usare male: la differenza tra i due è capire cosa succede sotto il cofano.
WordPress è un CMS open-source (GPL) in PHP, nato nel 2003 come piattaforma di blogging e diventato il software con cui è costruito oltre il 40% di tutti i siti del mondo. Prima cosa da chiarire, però: esistono due WordPress, e confonderli è un classico.
WordPress.org (self-hosted)
WordPress.com (servizio)
WordPress è una cucina attrezzata con un ricettario enorme. Di suo fa già un ottimo blog/sito "chiavi in mano" — molto più pronto di Drupal. Ma la vera forza è l'ecosistema: decine di migliaia di plugin e temi, come ingredienti e utensili pronti, che aggiungi con un click. Il rovescio? È talmente facile aggiungere roba che ti ritrovi la cucina intasata di gadget che litigano tra loro (il famigerato "plugin hell"). Facile cucinare qualcosa; serve disciplina per non fare un pasticcio.
La cosa più importante da capire sulle versioni moderne non è il numero, ma un cambio di paradigma: WordPress è passato dall'editor "documento" all'editor a blocchi (Gutenberg), e poi al Full Site Editing. Se hai imparato WordPress anni fa, è cambiato parecchio.
WordPress rilascia più major all'anno con nomi in codice di jazzisti. La versione attuale è WordPress 7.0 (rilasciata il 20 maggio 2026), che segue la serie 6.9.x. Regola d'oro: sta sempre sull'ultima major, per sicurezza e supporto.
| Tappa | Cosa ha portato |
|---|---|
| < 5.0 (Classic) | Editor "documento" (TinyMCE). Ancora vivo via plugin Classic Editor. |
| 5.0 (2018) | Arriva Gutenberg: l'editor a blocchi. Rivoluzione (e polemiche). |
| 5.9 / 6.x | Full Site Editing e i block theme: non solo i post, tutto il sito a blocchi. |
| 6.9.x (inizio 2026) | Ultima serie 6; affinamento di FSE, performance, security release. |
| 7.0 (mag 2026) | La major attuale. Il target di oggi. |
Ogni pezzo di contenuto — paragrafo, immagine, titolo, bottone, galleria — è un blocco indipendente che sposti, configuri e riusi. Ha sostituito il vecchio campo di testo unico. All'inizio odiato, oggi è lo standard.
Con i block theme, anche header, footer, sidebar e template di pagina si compongono a blocchi dal Site Editor, senza toccare PHP. Il confine tra "tema" e "contenuto" si assottiglia: costruisci l'intero sito visualmente.
Il "famoso install in 5 minuti" è leggenda vera. Ma per gestire WordPress da sysadmin devi conoscere com'è fatta la cartella: dove stanno la config, i temi, i plugin e i tuoi caricamenti.
Requisiti minimi moderni: PHP 8.1+, MySQL 8.0+ / MariaDB 10.5+, un web server (Nginx/Apache) e HTTPS. La maggior parte degli hosting offre l'installazione con un click, ma il modo pulito e ripetibile è WP-CLI.
# scarica il core di WordPress nella cartella corrente
wp core download --locale=it_IT
# genera wp-config.php con le credenziali del database
wp config create --dbname=miodb --dbuser=user --dbpass='segreta'
# crea le tabelle e l'utente admin
wp core install --url="https://miosito.it" --title="Il Mio Sito" \
--admin_user=capo --admin_email="me@miosito.it"
# fatto. Il sito è online. wp-admin per il pannello.
Tre file/cartelle di sistema e una cartella dove vive tutto ciò che è tuo. Impara questa mappa: è metà della gestione.
wp-admin/ o wp-includes/ è il peccato mortale: al primo aggiornamento le tue modifiche spariscono, oppure smetti di aggiornare e diventi un bersaglio. Tutto ciò che è tuo va in wp-content/ (in un tema figlio o in un plugin custom). Il core resta intonso e aggiornabile.
WordPress ragiona in Post e Pagine, ma sotto c'è un concetto più generale — il post type — e un database semplice ma con una tabella che fa (quasi) tutto. Capirlo ti smarca dal 90% dei misteri.
Contenuti cronologici: articoli di blog, news. Hanno data, categorie e tag, appaiono nei feed e negli archivi. "Cosa è successo".
Contenuti statici e gerarchici: Chi siamo, Contatti, Privacy. Niente data né categorie, possono avere pagine-figlie. "Cosa è".
Post e Pagina sono solo i due post type predefiniti. Puoi crearne di tuoi (Prodotti, Eventi, Portfolio, Ricette): stessa macchina, contenuti diversi. È ciò che rende WordPress un CMS e non solo un blog. WooCommerce, per esempio, aggiunge il post type "Prodotto".
register_post_type()) o con plugin come Custom Post Type UI + ACF (Advanced Custom Fields) per aggiungere campi personalizzati. È l'equivalente WordPress dei content type + field di Drupal, ma meno strutturato di default.
WordPress usa una dozzina di tabelle MySQL (prefisso wp_), ma due fanno il grosso del lavoro:
| Tabella | Cosa contiene |
|---|---|
wp_posts | Post, pagine, e ogni custom post type, revisioni, allegati. La tabella-tuttofare. |
wp_postmeta | Campi extra ("meta") associati ai contenuti. Chiave-valore. |
wp_options | Impostazioni del sito e dei plugin. Attenzione agli autoload gonfiati. |
wp_users / wp_usermeta | Account e i loro dati extra (incluse le capability). |
wp_terms & co. | Categorie, tag e tassonomie custom. |
wp_posts contenga tutto (con una colonna post_type che distingue) è la forza e il limite di WordPress: semplicissimo, ma su siti enormi con milioni di righe e tanti postmeta le query si appesantiscono. È il motivo per cui la cache (cap. 12) diventa vitale.
Le tassonomie sono il modo di WordPress per raggruppare i contenuti. Ne arrivano due predefinite — categorie e tag — e puoi crearne di tue.
Gerarchiche (hanno sotto-categorie), pensate per una struttura ampia: "Tecnologia → Sicurezza". Ogni post ne ha almeno una. Come i capitoli di un libro.
Piatti (nessuna gerarchia), pensati per dettagli trasversali: "firewall", "vpn", "linux". Ne metti quanti vuoi. Come le parole dell'indice analitico.
Come per i post type, puoi registrare tassonomie tue (funzione register_taxonomy()) e collegarle a qualsiasi post type. Esempio: una tassonomia "Marca" per il post type "Prodotto", o "Regione" per "Evento". È così che costruisci filtri e archivi su misura.
Post type: Ricetta
├─ tassonomia Portata (gerarchica) → Antipasti, Primi, Dolci
├─ tassonomia Ingrediente (piatta) → pomodoro, basilico, ...
└─ tassonomia Difficoltà (piatta) → facile, media, chef
# Da qui WordPress genera automaticamente:
# pagine-archivio (/portata/dolci), feed, menu, widget.
/category/sicurezza/) con l'elenco dei contenuti collegati. Gestita da un template del tema (cap. 07). Zero codice per avere le pagine per categoria.
L'editor moderno con cui scrivi contenuti e, con i block theme, costruisci l'intero sito. Capirne la logica — tutto è un blocco — ti fa smettere di combatterlo.
Il vecchio editor era un foglio di Word: un unico spazio in cui buttavi testo, immagini, tutto mischiato. Gutenberg è una scatola di mattoncini LEGO: ogni elemento è un pezzo separato — un blocco titolo, un blocco immagine, un blocco bottone — che prendi, sposti, colori e incastri. All'inizio sembra più macchinoso ("prima scrivevo e basta!"), ma ti dà un controllo del layout che col foglio di Word non avevi. E i mattoncini si possono salvare e riusare.
L'unità base: paragrafo, immagine, titolo, lista, bottone, colonne, embed...
Gruppi di blocchi pre-composti (una sezione hero, una call-to-action) da inserire pronti.
Blocchi riusabili: modifichi in un punto, cambiano ovunque li hai messi.
Con un block theme, oltre ai contenuti componi a blocchi anche i template del sito: l'intestazione, il piè di pagina, il layout dell'archivio, la pagina del singolo post. Tutto dal Site Editor (Aspetto → Editor), senza scrivere PHP. È il Full Site Editing in azione.
Il tema decide come appare il sito. Oggi convivono due famiglie — classici (PHP) e a blocchi (FSE) — e c'è una regola d'oro che ti salva la vita: usa sempre un tema figlio.
Basati su file PHP (header.php, index.php, functions.php...) secondo la template hierarchy. Massima flessibilità per chi programma. La stragrande maggioranza dei temi storici e dei page builder.
Basati su template HTML + blocchi e un file theme.json per stili globali. Editabili visualmente dal Site Editor. Il futuro secondo WordPress. Es. i temi "Twenty Twenty-*" recenti.
WordPress sceglie quale file del tema usare in base a cosa stai visitando, seguendo una gerarchia dal più specifico al più generico. Capirla è il segreto per sapere "dove metto le mani".
Visiti un singolo post → single.php → index.php
Visiti una pagina → page.php → index.php
Archivio di categoria → category.php → archive.php → index.php
Home / lista post → home.php → index.php
Pagina non trovata → 404.php → index.php
# WordPress scende la lista: usa il primo file che trova.
# index.php è il jolly finale, sempre presente.
Se modifichi direttamente un tema, al primo aggiornamento del tema perdi tutto. La soluzione è il tema figlio: un mini-tema che eredita tutto dal genitore e contiene solo le tue modifiche. Aggiorni il genitore in pace, le tue personalizzazioni restano.
/*
Theme Name: Il Mio Tema Child
Template: twentytwentyfive ← cartella del tema genitore
*/
/* le tue regole CSS qui: sovrascrivono il genitore */
.site-header { background: #5b73f0; }
I plugin aggiungono funzionalità senza toccare il core: SEO, e-commerce, backup, form, cache. Sono la ragione del successo di WordPress. E, gestiti male, la causa n.1 dei suoi disastri.
| Plugin | A cosa serve |
|---|---|
| WooCommerce | Trasforma WordPress in un e-commerce completo |
| Yoast SEO / Rank Math | Ottimizzazione SEO, sitemap, meta tag |
| Advanced Custom Fields | Campi personalizzati sui contenuti (fondamentale per siti seri) |
| Wordfence / Sucuri | Sicurezza: firewall, scansione malware |
| WP Super Cache / W3TC | Cache delle pagine per la velocità |
| UpdraftPlus | Backup automatici su cloud |
| Contact Form 7 / WPForms | Moduli di contatto |
| WPML / Polylang | Multilingua (non nativo in WordPress) |
WordPress ha cinque ruoli predefiniti, ciascuno con un set di capability (permessi). Meno granulare di Drupal, ma sufficiente per la maggior parte dei siti — se non regali il ruolo Amministratore a chiunque.
La magia estendibile di WordPress sta negli hook: punti di aggancio dove il tuo codice si inserisce senza toccare il core. Due tipi — action e filter — e li usi ovunque.
Action — "fai qualcosa"
Si aggancia a un momento ("quando salvi un post", "nel <head>") ed esegue del codice. Non deve restituire nulla.
Filter — "modifica un dato"
Intercetta un valore ("il titolo prima di stamparlo", "il contenuto"), lo modifica e lo restituisce.
// ACTION: aggiungi codice nel <head> di ogni pagina
add_action('wp_head', function() {
echo '<meta name="robots" content="index,follow">';
});
// FILTER: aggiungi un suffisso a ogni titolo (modifica e RITORNA)
add_filter('the_title', function($titolo) {
return $titolo . ' 🔥';
});
// La regola: action ESEGUE, filter TRASFORMA-e-ritorna.
Il Loop è il cuore di ogni template: il ciclo PHP che scorre i post da mostrare e ne stampa titolo e contenuto. Se guardi dentro un tema classico, lo trovi ovunque.
if ( have_posts() ) :
while ( have_posts() ) : the_post();
the_title( '<h2>', '</h2>' ); // stampa il titolo
the_content(); // stampa il contenuto
endwhile;
else :
echo '<p>Nessun contenuto.</p>';
endif;
// have_posts() = ci sono altri post? the_post() = passa al prossimo.
Per aggiungere funzioni tue, la via pulita è un plugin (non impilare tutto in functions.php). Basta un file PHP in wp-content/plugins/ con un'intestazione a commento.
<?php
/*
Plugin Name: Il Mio Plugin
Description: Fa una cosa utile.
Version: 1.0
*/
// niente accesso diretto al file
if ( ! defined( 'ABSPATH' ) ) exit;
add_action( 'init', function() {
// qui registri post type, tassonomie, shortcode...
});
Essendo il CMS più diffuso al mondo, WordPress è anche il più bersagliato. La buona notizia: quasi tutti gli attacchi sfruttano cose banali — roba non aggiornata e password deboli. L'igiene di base ti mette al riparo dal 95% dei problemi.
Non è il core di WordPress a essere insicuro: sono plugin/temi obsoleti, password deboli e versioni vecchie a far danni. Le difese, in ordine di importanza:
WordPress genera le pagine con PHP + query al database a ogni visita: comodo, ma pesante. La cache è ciò che trasforma un sito lento in uno veloce. E ci sono strumenti da sysadmin che ti cambiano la vita.
La riga di comando di WordPress: gestisci tutto da terminale senza aprire il browser. Aggiornamenti, utenti, plugin, database, ricerca-sostituzione. Indispensabile per chi amministra più siti o automatizza.
WordPress espone i contenuti via API REST (JSON): puoi usarlo come headless CMS, con un frontend separato (React, app mobile) che consuma i dati. Il backend resta WordPress, la vetrina la fai come vuoi.
wp-config.php. Potente, ma aggiunge complessità: attivalo solo se ti serve davvero.
I comandi WP-CLI e i percorsi che userai di continuo, più i termini da tenere a mente. Da tenere in un tab.
wp core update # aggiorna il core
wp plugin update --all # aggiorna tutti i plugin
wp theme list # elenca i temi
wp user create ... # crea utente
wp user update 1 --user_pass='x' # cambia password
wp db export backup.sql # dump del database
wp search-replace 'vecchio.it' 'nuovo.it' # migra URL
wp cache flush # svuota la cache
wp cron event list # i task pianificati
/wp-admin/ # pannello admin
wp-config.php # configurazione + DB
wp-content/themes/ # i temi
wp-content/plugins/ # i plugin
wp-content/uploads/ # media caricati
.htaccess / nginx.conf # regole web server
functions.php # funzioni del tema
/wp-json/ # la REST API
| Termine | In parole povere |
|---|---|
| Post | Contenuto cronologico (articolo). Ha data, categorie, tag. |
| Pagina | Contenuto statico e gerarchico (Chi siamo, Contatti). |
| Post type | Il "tipo" di contenuto. Post e Pagina sono i predefiniti; puoi crearne di custom. |
| Tassonomia | Sistema per raggruppare i contenuti: categorie (gerarchiche) e tag (piatti). |
| Blocco | L'unità dell'editor Gutenberg: paragrafo, immagine, bottone... |
| Gutenberg | Il block editor moderno (dalla 5.0). |
| FSE | Full Site Editing: comporre tutto il sito a blocchi (block theme). |
| Tema | Controlla l'aspetto del sito. Classico (PHP) o a blocchi (FSE). |
| Child theme | Tema figlio: contiene le tue modifiche senza toccare il genitore. |
| Template hierarchy | Le regole con cui WordPress sceglie quale file del tema usare. |
| Plugin | Estensione che aggiunge funzioni senza toccare il core. |
| Hook | Punto di aggancio per il tuo codice: action (esegue) o filter (modifica). |
| The Loop | Il ciclo PHP che scorre e mostra i post in un template. |
| Capability | Un singolo permesso; i ruoli sono insiemi di capability. |
| wp-content | La cartella dove vive tutto ciò che è tuo (temi, plugin, upload). |
| WP-CLI | La riga di comando di WordPress. |
| Multisite | Una installazione che gestisce una rete di siti. |
| Headless | Usare WordPress solo come backend/API, con un frontend separato. |
| WooCommerce | Il plugin che rende WordPress un e-commerce. |