Come effettuare la migrazione di un blog statico in WordPress

La migrazione di un blog statico in WordPress può essere un'operazione relativamente semplice o estremamente complessa a seconda della preparazione preliminare che si svolge sul sito di partenza e della conoscenza stessa delle funzionalità di WordPress. Vediamo insieme come procedere.

Nel caso dei siti statici siamo vincolati al numero di pagine esistenti: se sono poche possiamo semplicemente importarne i contenuti manualmente nell'editor di WordPress, ma se il loro numero è elevato dobbiamo creare uno script che automatizzi il processo di reperimento dei dati che ci interessano, ossia:

  • titolo del post o della pagina
  • contenuto del post o della pagina
  • categoria del post o della pagina

Come fare?

  1. effettuate una scansione delle directory del sito alla ricerca dei file HTML in essa presenti usando questo tutorial:

    List files and directories with PHP

  2. una volta ottenuti i file HTML, di cui vi consiglio di studiarne prima la struttura, dovete estrarne il titolo, il contenuto e la categoria. Potete utilizzare l'estensione DOM di PHP, stando attenti a sopprimere gli errori in caso di marcatura non ben formata ( consultate questa pagina utilizzando libxml_use_internal_errors ).
  3. per quanto riguarda il titolo del post potete usare l'elemento title, mentre per il contenuto dovete conoscere quale elemento lo racchiude (ad esempio <div id="content"></div>); per la categoria il discorso è più complesso: se non è specificata nel codice HTML, potete ricavarla dal percorso del file. Ad esempio se il percorso è sito.it/articoli/news/ la categoria sarà "news", ossia il nome della directory.

Esempio:

function get_inner_html( $node ) { 
  $innerHTML= ''; 
  $children = $node->childNodes; 
  foreach ( $children as $child ) { 
     $innerHTML .= $child->ownerDocument->saveXML( $child ); 
  } 
  return $innerHTML; 
} 
foreach( $files as $file ) {
  $html = file_get_contents( $file );
  $dom = new DOMDocument();
  $dom->loadHTML( $file );
  $title = $dom->getElementsByTagName( 'title' )->item( 0 )->firstChild->nodeValue;
  $content_element = $dom->getElementById( 'content' );
  $content = get_inner_html( $content_element );
}

Potete ora popolare un array associativo e salvare i dati come file JSON, file che poi userete in WordPress con la funzione wp_insert_post(). Vi consiglio di creare prima le categorie dei post e di salvarne i dati in un array associativo che userete durante il processo di inserimento dei post.

Torna su