Home › Forum › Amministrazione WP › MIGRAZIONE BLOG DA XOOPS VIA SQL
-
AutorePost
-
-
27 Dicembre 2013 alle 12:03 #26219wi_peppePartecipante
Ho cercato in lungo e in largo una guida che mi consentisse di migrare un blog esistente su piattaforma Xoops verso WordPress, ma i risultati sono stati pochi e parziali. Quindi ho applicato la regola del “chi fa da sé fa per tre” e, sperando di fare cosa gradita, pubblico qui il frutto di questo lavoro. Magari sarà utile al prossimo che vorrà avventurarsi per questa strada.
La versione di Xoops è la 2.3.1, quindi non l’ultimissima, ma non mi pare ci siano differenze significative, almeno per ciò che affronterò qui. Per WordPress ho presso una 3.8 appena installata nella cartella “blog” del webserver. Tutta l’operazione viene eseguita attraverso comandi SQL, dando quindi per scontato che i due database siano residenti sullo stesso server; inoltre si presuppone di eseguire i comandi dall’interno del DB di WordPress. Mi sono concentrato sul modulo “news” di Xoops, che è quello più spesso utilizzato come blog.
1 – Pulizia tabelle
Anche in un’installazione nuova sono presenti alcuni dati di esempio (almeno nella mia li ho trovati) per cui è il caso di fare preventivamente un po’ di pulizia delle tabelle di destinazione. Il tutto salvaguardando alcuni elementi (l’utente 1 e la categoria 1 in particolare) che ho ritenuto preferibile lasciare al loro posto.
DELETE FROM wp_term_relationships WHERE term_taxonomy_id > 1; DELETE FROM wp_term_taxonomy WHERE term_id > 1; DELETE FROM wp_terms WHERE term_id > 1; DELETE FROM wp_commentmeta; DELETE FROM wp_comments; DELETE FROM wp_postmeta WHERE post_id > 11; DELETE FROM wp_posts WHERE id > 11; DELETE FROM wp_usermeta WHERE user_id > 1; DELETE FROM wp_users WHERE id > 1;
2 – Importazione utenti
Operazione molto lineare. Non viene importato l’utente con id=1, supponendo che sia il webmaster, dal momento che tale utente è già presente in WordPress con lo stesso id.
La password viene importata ma è in realtà superflua: ogni utente dovrà effettuare il recupero password per poi impostarne una nuova.
INSERT INTO wp_users (id, user_login, user_pass, user_nicename, user_email, user_url, user_registered, display_name) SELECT uid, uname, pass, uname, email, url, From_Unixtime(user_regdate), name FROM db_xoops.mc_users WHERE uid > 1;
Vanno poi caricati altri dati relativi agli utenti, per garantirne il corretto funzionamento.
INSERT INTO wp_usermeta (user_id, meta_key, meta_value) SELECT id, 'nickname', user_login FROM wp_users; INSERT INTO wp_usermeta (user_id, meta_key, meta_value) SELECT id, 'wp_capabilities', 'a:1:{s:11:"contributor";b:1;}' FROM wp_users; INSERT INTO wp_usermeta (user_id, meta_key, meta_value) SELECT id, 'wp_user_level', '1' FROM wp_users;
3 – Importazione categorie
Gli id delle categorie vengono aumentati di 1 per evitare conflitti con la categoria lasciata nella corrispondente tabella di WordPress.
INSERT INTO wp_terms (term_id, name, slug) SELECT topic_id + 1, topic_title, Lower(Replace(topic_title, ' ', '-')) FROM db_xoops.mc_topics; INSERT INTO wp_term_taxonomy (term_taxonomy_id, term_id, taxonomy) SELECT topic_id + 1, topic_id + 1, 'category' FROM db_xoops.mc_topics;
4 – Importazione articoli
All’id degli articoli viene anteposto “10”; in questo modo si evitano conflitti con altri record già presenti e, soprattutto, si semplifica il successivo lavoro di reindirizzamento. Agli orari relativi al GMT viene sottratto 3600 perché siamo in zona GMT+1.
Va corretto l’indirizzo del sito presente nel comando di inserimento.
INSERT INTO wp_posts (id, post_author, post_date, post_date_gmt, post_content, guid, post_title, post_status, comment_status, ping_status, post_modified, post_modified_gmt, post_parent, menu_order, post_type, comment_count) SELECT Concat('10', storyid), uid, From_Unixtime(published), From_Unixtime(published - 3600), Concat(hometext, ' ', bodytext), Concat('http://www.miosito.it/blog/?p=10', storyid), title, 'publish', 'open', 'open', From_Unixtime(published), From_Unixtime(published - 3600), 0, 0, 'post', 0 FROM db_xoops.mc_stories;
A questo punto vanno associati gli articoli con le rispettive categorie e valorizzati i contatori.
INSERT INTO wp_term_relationships (object_id, term_taxonomy_id, term_order) SELECT Concat('10', storyid), topicid + 1, '0' FROM db_xoops.mc_stories; UPDATE wp_term_taxonomy SET count = (SELECT Count(*) FROM db_xoops.mc_stories WHERE topicid = wp_term_taxonomy.term_id - 1);
Va inoltre valorizzato il campo che fornisce il nome per il permalink, opportunamente ripulito dai simboli.
UPDATE wp_posts SET post_name = Lower(Replace(post_title, ' ', '-')), post_name = Replace(post_name, ',', ''), post_name = Replace(post_name, ':', ''), post_name = Replace(post_name, '.', ''), post_name = Replace(post_name, ';', ''), post_name = Replace(post_name, '?', ''), post_name = Replace(post_name, '!', ''), post_name = Replace(post_name, '%', ''), post_name = Replace(post_name, '&', ''), post_name = Replace(post_name, '*', ''), post_name = Replace(post_name, '@', ''), post_name = Replace(post_name, '=', ''), post_name = Replace(post_name, '/', '-'), post_name = Replace(post_name, '+', '-'), post_name = Replace(post_name, "'", "-"), post_name = Replace(post_name, "’", "-"), post_name = Replace(post_name, '"', ''), post_name = Replace(post_name, 'à ', 'a'), post_name = Replace(post_name, 'è', 'e'), post_name = Replace(post_name, 'é', 'e'), post_name = Replace(post_name, 'à¬', 'i'), post_name = Replace(post_name, 'ò', 'o'), post_name = Replace(post_name, 'ù', 'u') WHERE id > 11;
5 – Importazione commenti
Nel caricamento dei commenti si segue ovviamente la stessa logica già applicata per gli articoli.
INSERT INTO wp_comments (comment_id, comment_post_id, comment_parent, comment_date, comment_date_gmt, comment_content, comment_approved, user_id, comment_author_ip) SELECT com_id, Concat('10', com_itemid), com_pid, From_Unixtime(com_created), From_Unixtime(com_created - 3600), com_text, 1, com_uid, com_ip FROM db_xoops.mc_xoopscomments;
Successivamente, i commenti vanno contati e completati con i rispettivi dati utente.
UPDATE wp_posts SET comment_count = (SELECT Count(*) FROM wp_comments WHERE comment_post_id = wp_posts.id); UPDATE wp_comments JOIN wp_users ON wp_users.id = wp_comments.user_id SET wp_comments.comment_author = wp_users.display_name, wp_comments.comment_author_email = wp_users.user_email, wp_comments.comment_author_url = wp_users.user_url;
6 – Operazioni conclusive
Completate le operazioni di importazione descritte sopra, è opportuno procedere con altri due passaggi.
Il primo consiste nel rendere gli articoli di WordPress accessibili dai corrispondenti vecchi indirizzi, in modo che chi ha memorizzato i link non finisca sulle solite pagine di errore. L’obiettivo è raggiungibile con poche righe da inserire nel file “.htaccess” del sito, correggendo opportunamente il nome del dominio.
RewriteEngine On RewriteBase / RewriteCond %{QUERY_STRING} ^storyid=([0-9]+)$ [NC] RewriteRule ^modules/news/article.php$ http://www.miosito.it/blog/?p=10%1 [R=301,L]
L’altro passaggio è quello di rigenerare i permalink dall’interfaccia di amministrazione di WordPress (Impostazioni – Permalink) per ottenere indirizzi SEO compatibili.
E’ tutto. Molte altre possono essere le variabili interessate e le situazioni particolari, ma penso che questa sia una buona base da personalizzare in funzione alle specifiche esigenze di ciascuno.
Buon divertimento.
-
27 Dicembre 2013 alle 12:30 #108552wollyAmministratore del forum
Grazie mille per il tuo prezioso contributo.
Lo metto in evidenza.
-
14 Settembre 2014 alle 21:37 #113476AndreaeNoemiPartecipante
Mi fa davvero piacere aver trovato questa guida!!!
Spero che la lasceranno in evidenza per lungo tempo…
-
21 Novembre 2014 alle 20:57 #114772soularcangelPartecipante
Salve,
ho realizzato uno script per importare gli articoli dai moduli SmartSection ed Article di Xoops a WordPress.
E’ in programmazione l’esportazione dal modulo News di Xoops!
Lo script importa gli articoli anche su un sito realizzato in WordPress che contiene già altri articoli.
Per configurarlo basta settare i parametri contentuti nel file config.php
E’ possibile scaricare lo script da questo link: http://www.mediaclaim.it/xoops-to-wordpress-articles-transfer/
Se nel frattempo qualcuno vuole convertire lo script in modulo WP é libero di farlo!!!
-
22 Aprile 2015 alle 9:38 #117064libri da leggerePartecipante
Avevo visto questa guida come un invito a nozze per me che sto iniziando a masticare i fondamenti della programmazione ma ci ho messo un pò a digerirla. Ci sono riuscito finalmente. Grazie mille per l’ottima guida!
-
22 Aprile 2015 alle 15:36 #117073tocaiPartecipante
Buon pomeriggio a tutti,
sono un neofita di WordPress, fino ad adesso ho sempre usato Xoops.
Sono un webmaster e un cliente mi ha chiesto di sviluppare un sito con WP, ho iniziato a studiarlo e devo dire che mi soddisfa molto! Da qui la decisione di migrare altri siti che ho sviluppato in Xoops e portarli su WP. Ho cercato in rete ed ho trovato questo topic, in verità non mi è tanto chiaro, ci sono guide aggiornate (ho i siti su xooops ultima relase e la stessa cosa di WP ultima relase)? e/o è possibile avere una guida passo passo di come proseguire con le operazioni descritte sopra?
Credo che verrebbero invogliati anche altri utenti che usano Xoops se la migrazione sarebbe chiara e semplice.
Grazie per quanto farete.
Tonino
-
10 Agosto 2015 alle 9:11 #118432gegginoPartecipante
Salve,
ho realizzato uno script per importare gli articoli dai moduli SmartSection ed Article di Xoops a WordPress.
E’ in programmazione l’esportazione dal modulo News di Xoops!
Lo script importa gli articoli anche su un sito realizzato in WordPress che contiene già altri articoli.
Per configurarlo basta settare i parametri contentuti nel file config.php
E’ possibile scaricare lo script da questo link: http://www.mediaclaim.it/xoops-to-wordpress-articles-transfer/
Se nel frattempo qualcuno vuole convertire lo script in modulo WP é libero di farlo!!!
Ciao soularcangel, volevo segnalarti che io ho testato in locale il tuo script con Xoops 2.5.7.1 e news 1.7.1 ma purtroppo non mi trova nessun articolo e non compare nessun pulsante.
Tot. Articoli in News Module: 0
Tot. Articoli in SmartSection Module: 0
Tot. Articoli in Article Module: 0
Tot. Articoli da importare: 0
Nella pagina non ottengo nessun tipo di errore. Ho controllato decine di volte i parametri del db. Ho installato come dicevo in locale sia in una cartella dentro htdocs sia dentro direttamente il vecchio sito Xoops.. ma il risultato non cambia.
Vedrò di mettere mano al codice sperando di poter fare qualcosa. Eventuali consigli sono ben accetti.
-
15 Novembre 2015 alle 17:36 #119221LeggerePartecipante
Mi fa piacere vedere che abbiate lasciato questa guida online! L’avevo letta tempo fa ma l’ho usata solo di recente! Un pò complicata, non proprio come leggere un romanzo, ma alla fine ce l’ho fatta! Grazie mille a wi_peppe e ai moderatori che l’hanno lasciata online!
-
-
AutorePost
- Devi essere connesso per rispondere a questo topic.