使用織夢 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