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?
- effettuate una scansione delle directory del sito alla ricerca dei file HTML in essa presenti usando questo tutorial:
- 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 ).
- 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.