Emiliano Reali
Emiliano Reali
Emiliano Reali
Emiliano Reali
Emiliano Reali

Developer

Analista Programmatore

Sviluppatore Web

Webmaster

Web Designer

Automazione di Modifiche Massive su WordPress con SQL

  • Creato da: Emiliano Reali
  • Data: 07/05/2026
  • Cliente: Clima Group Impianti
  • Categoria: Script

Ho sviluppato una serie di script SQL personalizzati per riorganizzare un sito WordPress composto da quasi 18.000 articoli, distribuiti all’interno di 110 categorie.

Le modifiche richieste riguardavano titoli, slug, contenuti HTML, collegamenti interni e metadati SEO. Intervenire manualmente su una quantità così elevata di pagine sarebbe stato poco sostenibile e avrebbe richiesto l’apertura e il controllo individuale di migliaia di articoli.

Il progetto ha quindi richiesto l’analisi della struttura del database WordPress e lo sviluppo di procedure capaci di applicare modifiche massive, ma allo stesso tempo selettive e limitate alle sole categorie interessate.

Il Problema

Il sito si era sviluppato nel corso degli anni attraverso la pubblicazione di migliaia di articoli dedicati a marchi, prodotti, servizi e aree geografiche differenti.

Con quasi 18.000 contenuti e 110 categorie, anche una modifica apparentemente semplice poteva trasformarsi in un’attività molto lunga.

Tra gli interventi richiesti erano presenti:

  • rimozione o sostituzione di parole nei titoli;
  • aggiornamento coordinato degli slug;
  • modifica di blocchi HTML ripetuti;
  • correzione dei collegamenti interni;
  • riorganizzazione delle sezioni dedicate ai contatti;
  • aggiornamento delle keyphrase SEO;
  • modifica delle meta description;
  • allineamento dei dati presenti nelle tabelle del plugin SEO.

Una sostituzione generica applicata all’intero database avrebbe potuto modificare articoli non coinvolti, eliminare porzioni di contenuto corrette o intervenire su parole presenti in contesti differenti.

Era quindi necessario costruire ogni operazione intorno alla reale struttura del sito.

L’Analisi del Database WordPress

Prima di scrivere le query ho analizzato il modo in cui WordPress collegava gli articoli alle rispettive categorie.

Le informazioni necessarie non erano contenute in una singola tabella. Per individuare correttamente gli articoli da aggiornare era necessario utilizzare le relazioni tra:

  • tabella degli articoli;
  • tabella delle relazioni tra contenuti e termini;
  • tabella delle tassonomie;
  • tabella dei metadati;
  • tabelle aggiuntive utilizzate dal plugin SEO.

Questa analisi ha permesso di identificare ogni gruppo di articoli attraverso la categoria di appartenenza, evitando di basare gli aggiornamenti esclusivamente sulla presenza di una parola nel titolo o nel contenuto.

Lo stesso termine poteva infatti comparire in categorie diverse, ma richiedere una modifica soltanto all’interno di una specifica sezione del sito.

Perché Era Necessario Intervenire in Massa

Su un sito con pochi contenuti, alcune modifiche possono essere effettuate direttamente dal pannello di amministrazione di WordPress.

Con quasi 18.000 articoli, questo approccio non era praticabile.

Anche ipotizzando pochi minuti per ogni pagina, il controllo manuale avrebbe richiesto un numero molto elevato di ore e avrebbe aumentato progressivamente il rischio di:

  • saltare alcuni articoli;
  • applicare modifiche differenti a pagine simili;
  • inserire errori negli URL;
  • lasciare metadati SEO non aggiornati;
  • interrompere accidentalmente la struttura HTML;
  • creare incoerenze tra categorie appartenenti allo stesso gruppo.

Gli script hanno permesso di trasformare attività ripetitive in procedure precise, replicabili e adattabili alle diverse categorie del sito.

La Soluzione Sviluppata

Ho realizzato una serie di query SQL dedicate alle singole tipologie di intervento.

Ogni script individuava gli articoli appartenenti a una categoria specifica e applicava la modifica soltanto quando venivano rispettate determinate condizioni.

Le query sono state utilizzate per:

  • aggiornare contemporaneamente titolo e slug;
  • rimuovere parole soltanto quando presenti alla fine del titolo;
  • eliminare suffissi esclusivamente dalla parte finale dello slug;
  • sostituire blocchi HTML delimitati da elementi riconoscibili;
  • inserire nuove sezioni in punti precisi del contenuto;
  • correggere URL interni ripetuti in numerosi articoli;
  • aggiornare keyphrase e meta description;
  • sincronizzare i dati salvati dal plugin SEO.

Non è stata quindi applicata un’unica sostituzione generale. Ogni categoria presentava contenuti, marchi e strutture differenti e richiedeva una query costruita intorno alle sue caratteristiche.

Un Esempio Concreto

Una delle operazioni riguardava un gruppo di articoli che conteneva il nome di una città alla fine del titolo e dello slug.

Lo script doveva rimuovere quella parola soltanto quando si trovava effettivamente nella posizione finale prevista.

Una semplice sostituzione testuale avrebbe potuto eliminare lo stesso termine anche da titoli nei quali rappresentava una parte importante del contenuto.

La procedura verificava quindi separatamente:

  • l’appartenenza dell’articolo alla categoria interessata;
  • la presenza della parola alla fine del titolo;
  • la presenza del relativo suffisso alla fine dello slug;
  • la necessità di modificare uno o entrambi i valori.

La struttura semplificata dell’operazione era simile alla seguente:

UPDATE wp_posts p
INNER JOIN wp_term_relationships tr
    ON tr.object_id = p.ID
INNER JOIN wp_term_taxonomy tt
    ON tt.term_taxonomy_id = tr.term_taxonomy_id
SET
    p.post_title = CASE
        WHEN p.post_title LIKE '% termine'
        THEN ...
        ELSE p.post_title
    END,
    p.post_name = CASE
        WHEN p.post_name LIKE '%-termine'
        THEN ...
        ELSE p.post_name
    END
WHERE tt.term_id = ID_CATEGORIA;

L’esempio è semplificato, ma mostra il principio utilizzato: selezionare gli articoli attraverso la tassonomia e modificare i campi soltanto quando rispettano condizioni precise.

Modifica Selettiva dei Contenuti HTML

Una parte più complessa del progetto ha riguardato i contenuti salvati nel campo principale degli articoli.

Numerose pagine contenevano sezioni ripetute dedicate a contatti, servizi, collegamenti utili e informazioni specifiche del marchio.

Gli script dovevano sostituire soltanto determinati blocchi, preservando tutto il contenuto precedente e successivo.

Per ottenere questo risultato ho utilizzato riferimenti presenti nella struttura HTML, come intestazioni, chiusure di liste, shortcode e sezioni ricorrenti.

Questo ha permesso di:

  • mantenere intatti i testi non coinvolti;
  • evitare la cancellazione di paragrafi corretti;
  • inserire nuovi collegamenti nella posizione prevista;
  • uniformare le sezioni comuni tra gli articoli;
  • adattare automaticamente alcuni contenuti al titolo della pagina.

Aggiornamento dei Dati SEO

La modifica del contenuto visibile non era sufficiente.

In diversi casi, la parola rimossa dal titolo o dallo slug era ancora presente nella keyphrase principale, nel titolo SEO o nella meta description.

Ho quindi sviluppato query dedicate anche ai metadati, in modo da mantenere allineati:

  • titolo WordPress;
  • slug della pagina;
  • contenuto dell’articolo;
  • keyphrase principale;
  • titolo SEO;
  • meta description;
  • dati presenti nelle tabelle di indicizzazione SEO.

Questo coordinamento ha evitato che una pagina aggiornata continuasse a presentare informazioni precedenti nei dati utilizzati dai motori di ricerca.

Le Principali Difficoltà Gestite

Il valore del progetto non consisteva soltanto nell’eseguire query SQL, ma nel costruire interventi sufficientemente precisi per una base dati molto estesa.

Le principali difficoltà affrontate sono state:

  • selezionare gli articoli attraverso categorie specifiche;
  • gestire 110 categorie con strutture non sempre identiche;
  • evitare modifiche su contenuti appartenenti ad altre sezioni;
  • riconoscere parole presenti soltanto alla fine di titoli e slug;
  • preservare le parti di HTML che non dovevano essere alterate;
  • aggiornare dati distribuiti tra più tabelle;
  • mantenere coerenti contenuti e metadati SEO;
  • rendere le procedure adattabili a nuovi gruppi di articoli.

Ogni query è stata quindi costruita come una procedura mirata, non come un semplice comando di sostituzione globale.

Il Risultato

Gli script hanno permesso di intervenire su gruppi molto ampi di contenuti senza dover modificare manualmente quasi 18.000 articoli.

Le operazioni sono state suddivise per categoria e tipologia di modifica, rendendo possibile aggiornare il sito progressivamente e mantenere il controllo sui diversi gruppi di pagine.

Il risultato finale ha incluso:

  • titoli uniformati;
  • slug corretti;
  • contenuti HTML riorganizzati;
  • collegamenti interni aggiornati;
  • sezioni comuni rese coerenti;
  • metadati SEO allineati;
  • riduzione del lavoro manuale;
  • procedure riutilizzabili per interventi successivi.

Un’attività che avrebbe richiesto il controllo individuale di migliaia di pagine è stata trasformata in un insieme di procedure tecniche mirate e ripetibili.

Competenze Applicate

Il progetto ha richiesto competenze che vanno oltre la semplice scrittura di query SQL.

È stato necessario comprendere la struttura interna di WordPress, analizzare le relazioni tra contenuti e tassonomie, individuare le dipendenze tra articoli e metadati e progettare condizioni capaci di proteggere i dati non coinvolti.

Le principali competenze applicate sono state:

  • analisi del database WordPress;
  • sviluppo di query SQL condizionate;
  • utilizzo di join tra tabelle relazionate;
  • gestione di tassonomie e categorie;
  • manipolazione controllata di contenuti HTML;
  • aggiornamento dei metadati SEO;
  • automazione di attività ripetitive;
  • progettazione di procedure riutilizzabili.

Tecnologie Utilizzate

  • WordPress
  • SQL
  • MySQL
  • HTML
  • Yoast SEO