使用織夢 CMS 每個月都被黑,打完官方最新補丁不久又有漏洞繼續被黑,算是受夠了,果斷把網站從天殺的 dedecms 中搬家到 WordPress 程式,網上搜尋轉換教程,折騰幾個小時,順利把網站的文章轉移到 WordPress 程式,保留了文章點選數、文章日期、文章分類,文章標籤的資料表著實弄不過來,只能放棄!下面是具體的操作方法,操作前請備份好網站資料。

1 、 DEDECMS 文章標題等基本資料匯入 WordPress 站點

織夢 CMS 的文章標題、正文和欄目分別存放在三個不同的資料表中,而 WordPress 則把文章標題和正文放在一個資料表,欄目 (分類目錄) 放在另一個資料表中,為了簡化後面的工作,第一步是製作生成織夢 CMS 的全站 RSS 檔案 (製作方法:http://www.qimiweb.com/article/dedecms/201305/48.html),然後透過 WordPress 程式後臺——工具——匯入——RSS,上傳匯入生成的織夢全站 RSS 檔案。

這樣就可以使 WordPress 在 wp_posts 資料表上生成文章標題,在 wp_terms 資料表上生成文章分類,並匹配起來,此外透過 RSS 匯入,wp_posts 資料表上還匯入了文章摘要、日期、自定義網址等資料,但是 RSS 不會匯入全文!

2 、匯入織夢 CMS 文章全文到 WordPress 站點

織夢文章的資料儲存在 dede_addonarticle 資料庫的 body 欄位中,現在需要把 body 欄位的內容轉到 WordPress 資料庫的 wp_posts 資料庫的 post_content 欄位裡。

這個轉換需要使用一個橋樑——那就是 dede_archives 資料表,即 dede_addonarticle 上 body 的內容先轉到 dede_archives 上,再從 dede_archives 轉到 wp_posts 的 post_content 裡。這兩次轉換的匹配點,分別是織夢裡的文章 id,以及 WordPress 裡已經匯入了的文章標題 (這與織夢裡的文章標題是一樣的) 。

具體的操作步驟如下:

進入 phpmyadmin,選擇 dedecms 網站使用的資料庫,在 SQL 輸入框中執行以下 SQL 語句,在織夢資料庫的 dede_archives 表上,新增欄位 body

ALTER TABLE dede_archives ADD body longtext NOT NULL

然後再執行以下 SQL 語句把 dede_addonarticle 資料表中的 body 欄位內容匯入到 dede_archives 的 body 欄位,語句以 dede_addonarticle 的 aid 和 dede_archives 的 id 為匹配點:

UPDATE dede_archives,dede_addonarticle
SET dede_archives.body = dede_addonarticle.body
WHERE dede_archives.id = dede_addonarticle.aid

接著透過 phpmyadmin 匯出功能把 dede_archives 資料表匯出,然後再透過匯入功能把該資料表匯入 WordPress 網站使用的資料庫中,使其與 wp_posts 資料庫處在同一個資料庫裡。

下面再次使用 SQL 語句把 dede_archives 的 body 匯入到 wp_posts 上的 post_content 上,以文章標題為匹配點 (前提是文章標題都是唯一的):

UPDATE wp_posts,dede_archives
SET wp_posts.post_content = dede_archives.body
WHERE wp_posts.post_title = dede_archives.title

至此文章內容部分轉換完成!

3 、織夢 CMS 文章點選數匯入 WordPress 網站

織夢 CMS 的文章有點選數 (即是文章的閱讀數),不匯入 WordPress 怪可惜。

在 WordPress 上安裝 Simple Hit Counter 外掛,啟用後資料庫裡會生成 wp_hitcount 表,在 SQL 輸入框中執行以下語句在增加 hits 欄位

ALTER TABLE wp_posts ADD hits int(10) NOT NULL

執行以下 SQL 語句,把 dede_archives 上的點選數 click 匯入到 wp_posts 的 hits 上,仍然以標題為匹配點:

UPDATE wp_posts,dede_archives
SET wp_posts.hits = dede_archives.click
WHERE wp_posts.post_title = dede_archives.title

最後執行以下 SQL 語句把 wp_posts 的 hits 匯入到 wp_hitcount 的 hits 上,這次以 wp_posts 的 ID 和 wp_hitcount 的 pid 為匹配點:

UPDATE wp_posts,wp_hitcount
SET wp_hitcount.hits = wp_posts.hits
WHERE wp_hitcount.pid = wp_posts.ID

至此點選數轉換完成,然後在模板中新增 Simple Hit Counter 外掛呼叫程式碼即可。

附:我習慣使用 wp-postviews 外掛,所以我是把織夢 CMS 文章點選數轉換為 wp-postviews 外掛的瀏覽數。但是由於該外掛需要文章有瀏覽數之後才會在資料庫中生成 meta_key 的值,因此需要先在 wp_postmeta 表中新增對應的 meta_key 的值。

執行以下 SQL 語句,把文章 ID 匯入 wp_postmeta 中的 post_id 欄位:

INSERT INTO wp_postmeta(post_id) SELECT ID FROM wp_posts

執行以下 SQL 語句,把上面新增的 post_id 中的 meta_key 欄位的 null 設定為 views 值:

UPDATE wp_postmeta SET meta_key='views' WHERE meta_key IS NULL

執行以下 SQL 語句,把上面新增的 post_id 中的 meta_value 欄位的 null 設定為 0 值:

UPDATE wp_postmeta SET meta_value='0' WHERE meta_value IS NULL

然後再把 wp_posts 的 hits 匯入到 wp_postmeta 資料表中的 meta_key 欄位的值 views 對應的 meta_value,SQL 語句如下:

UPDATE wp_postmeta,wp_posts
SET wp_postmeta.meta_value=wp_posts.hits
WHERE  wp_postmeta.post_id=wp_posts.ID AND meta_key='views'

VI:bokeba