Emiliano Reali
Emiliano Reali
Emiliano Reali
Emiliano Reali
Emiliano Reali

Developer

Analista Programmatore

Sviluppatore Web

Webmaster

Web Designer

Modifiche Massive WordPress con Query SQL

  • Cliente: Clima Group Impianti
  • Categoria: Script

Ho sviluppato una serie di script dedicati alle modifiche massive WordPress con query SQL per riorganizzare un sito composto da quasi 18.000 articoli, distribuiti all’interno di 110 categorie.

Gli interventi richiesti riguardavano titoli, slug, contenuti HTML, collegamenti interni, keyphrase e metadati SEO. Effettuare manualmente queste operazioni avrebbe richiesto l’apertura e il controllo individuale di migliaia di pagine, con tempi molto lunghi e un rischio crescente di errori.

Il progetto ha quindi richiesto l’analisi della struttura del database WordPress e lo sviluppo di procedure capaci di applicare aggiornamenti estesi, ma allo stesso tempo selettivi e limitati alle categorie interessate.

Modifiche Massive WordPress con Query SQL: Il Progetto

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 oppure intervenire su termini presenti in contesti differenti.

Era quindi necessario costruire ogni operazione intorno alla reale struttura del sito e alle caratteristiche specifiche delle singole categorie.

Il Problema da Risolvere

Il problema non consisteva soltanto nella quantità di articoli da aggiornare. I contenuti non seguivano sempre una struttura completamente uniforme.

Una stessa parola poteva comparire:

  • alla fine del titolo;
  • all’interno del titolo con un significato differente;
  • nello slug;
  • nel contenuto HTML;
  • nei collegamenti interni;
  • nella keyphrase SEO;
  • nella meta description;
  • nelle tabelle di indicizzazione del plugin SEO.

Applicare una sostituzione globale avrebbe quindi potuto produrre risultati differenti da quelli richiesti.

Ogni script doveva individuare con precisione il gruppo di articoli coinvolto, riconoscere la posizione del testo da modificare e preservare tutte le informazioni estranee all’intervento.

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 Automatizzare gli Interventi

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.

Selezione degli Articoli per Categoria

Uno degli aspetti principali del progetto consisteva nel limitare ogni aggiornamento alla categoria corretta.

La selezione non poteva dipendere soltanto dal titolo dell’articolo, perché termini identici o simili potevano essere presenti anche in altre sezioni del sito.

Le query utilizzavano quindi le relazioni tra articoli, termini e tassonomie per individuare il gruppo esatto di contenuti.

Questa impostazione permetteva di:

  • escludere articoli appartenenti ad altre categorie;
  • riutilizzare la stessa logica su gruppi differenti;
  • adattare ogni operazione alla struttura della categoria;
  • evitare sostituzioni estese all’intero database;
  • mantenere separate modifiche con obiettivi diversi.

La categoria diventava quindi uno dei principali criteri di sicurezza e precisione della procedura.

Un Esempio di Aggiornamento di Titolo e Slug

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.taxonomy = ‘category’
    AND 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;
  • tag di apertura e chiusura;
  • chiusure di liste;
  • shortcode;
  • caption delle immagini;
  • sezioni ricorrenti;
  • stringhe utilizzate come delimitatori.

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.

Inserimento di Contenuti in Punti Precisi

Alcuni interventi non richiedevano la sostituzione completa di una sezione, ma l’inserimento di un nuovo elemento in una posizione determinata.

Gli script dovevano, ad esempio, aggiungere:

  • una parola all’interno del primo titolo HTML;
  • una nuova intestazione prima di un testo riconoscibile;
  • un blocco contatti dopo una caption;
  • una sezione di collegamenti interni alla fine del contenuto;
  • un testo specifico prima di una lista già presente.

La posizione veniva individuata attraverso elementi HTML o stringhe già presenti nell’articolo.

In questo modo era possibile intervenire all’interno del contenuto senza ricostruire completamente la pagina e senza modificare le parti corrette.

Aggiornamento Coordinato dei Collegamenti Interni

La modifica di titoli e slug richiedeva anche un controllo dei collegamenti interni.

Quando un URL veniva modificato, era necessario evitare che numerosi articoli continuassero a collegare la versione precedente.

Le procedure hanno quindi permesso di:

  • correggere gli URL presenti nei contenuti;
  • aggiornare anchor text quando necessario;
  • mantenere coerenti pagine principali e pagine di zona;
  • rafforzare i collegamenti verso i contenuti di riferimento;
  • ridurre la presenza di link interni non aggiornati.

Gli aggiornamenti degli slug potevano inoltre essere accompagnati dalla definizione dei relativi redirect verso i nuovi indirizzi.

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.

Allineamento con Yoast SEO

Una parte dei dati SEO era salvata nei metadati degli articoli, mentre altre informazioni erano presenti nelle tabelle utilizzate da Yoast SEO per l’indicizzazione interna.

Limitarsi a modificare il titolo WordPress o il contenuto avrebbe quindi potuto lasciare valori non coerenti in altre parti del database.

Le procedure sono state progettate per intervenire, quando necessario, su:

  • keyphrase principale;
  • titolo SEO personalizzato;
  • meta description;
  • valori indicizzati nelle tabelle Yoast;
  • riferimenti al titolo o allo slug precedente.

In questo modo le informazioni visibili, gli URL e i dati SEO potevano essere aggiornati in modo coordinato.

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.

Procedure Adattabili a Categorie Differenti

Le categorie del sito non seguivano sempre la stessa struttura.

Alcune richiedevano la modifica di titolo e slug. Altre richiedevano interventi nel contenuto, nei collegamenti, nei dati SEO oppure in più elementi contemporaneamente.

Ho quindi organizzato le procedure in modo da poter riutilizzare la logica principale, adattando:

  • ID della categoria;
  • parole da ricercare;
  • condizioni sul titolo;
  • suffissi dello slug;
  • blocchi HTML da sostituire;
  • testi da inserire;
  • metadati da aggiornare.

Questo approccio ha reso possibile applicare lo stesso metodo a gruppi diversi senza utilizzare una query globale e poco controllabile.

Il Risultato del Progetto

Le modifiche massive WordPress con query SQL 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

Automazione Senza Perdere il Controllo

Automatizzare un intervento non significa applicare indiscriminatamente la stessa modifica a tutto il database.

In questo progetto l’automazione è stata costruita attraverso condizioni, relazioni tra tabelle e delimitatori capaci di restringere ogni operazione ai soli contenuti coinvolti.

Questo metodo ha permesso di combinare la velocità degli aggiornamenti massivi con la precisione necessaria per lavorare su un sito composto da migliaia di pagine differenti.

Le modifiche massive WordPress con query SQL sono diventate quindi uno strumento per riorganizzare contenuti, URL e dati SEO mantenendo ogni intervento selettivo, comprensibile e adattabile alle reali esigenze del progetto.