在 Textpattern 匯入WP的文章

前幾天開始安裝 Textpattern,但卻在匯入WP文章時發現一些問題。
原本以為這是因為不支援WP的文章匯入功能,還大費周章的跑去找WP文章的MT格式輸出,如 PapaScottExport from WordPress,跟WP外掛形式的WPexport

但看到 import_wp.php 裡所寫的代碼似乎並不是這麼一回事,明明就有 WP 文章內容的SQL查詢。

於是檢視一下 import_mtdb.php 當作參考﹔暮然發現,原來import_wp.php中少了ExcerptExcerpt_html的欄位。

後來我將這些欄位補上去之後,Textpattern 就能正常匯入WP文章了,在這邊紀錄一下修改步驟:

textpattern/include/import/import_wp.php
» 增加 Excerpt 欄位

php · [高亮] · [原始]

  1. # FIND
  2. ".$wpdbprefix."posts.post_content as Body,
  3.  
  4. # ADD NEXT LINE
  5. ".$wpdbprefix."posts.post_excerpt as Excerpt,
  6.  
  7.  
  8. # FIND
  9. Body_html = ‘".addslashes($Body_html)."’,
  10.  
  11. # ADD NEXT LINE
  12. Excerpt  =‘".addslashes($Excerpt)."’,
  13. Excerpt_html=‘".addslashes($Excerpt)."’,
# FIND
".$wpdbprefix."posts.post_content as Body,

# ADD NEXT LINE
".$wpdbprefix."posts.post_excerpt as Excerpt,

# FIND
Body_html = \'".addslashes($Body_html)."\',

# ADD NEXT LINE
Excerpt		=\'".addslashes($Excerpt)."\',
Excerpt_html=\'".addslashes($Excerpt)."\',

» 過濾附件頁面
忘了 WP 從那一版開始,內建了附件上傳功能,而這些已經上傳過的附件將會自動建立一個附件的文章頁面,其文章的 post_status 為 attachment。
我不想讓這些附件變為 Textpattern 的文章,所以加入了過濾 attachment 的 sql 語法

php · [高亮] · [原始]

  1. # FIND
  2. ".$wpdbprefix."users.ID = ".$wpdbprefix."posts.post_author
  3.  
  4. # ADD NEXT LINE
  5. WHERE ".$wpdbprefix."posts.post_status != ‘attachment’
# FIND
".$wpdbprefix."users.ID = ".$wpdbprefix."posts.post_author

# ADD NEXT LINE
WHERE ".$wpdbprefix."posts.post_status != \'attachment\'

» 開啟迴響
天哪!預設匯入wp文章的迴響是關閉的,是要叫人家手動一篇一篇開啟迴響嗎?

php · [高亮] · [原始]

  1. # FIND
  2. ".$wpdbprefix."posts.ID as ID,
  3.  
  4. # ADD NEXT LINE
  5. ".$wpdbprefix."posts.comment_status as Annotate,
  6.  
  7. # FIND
  8. foreach($articles as $a){
  9.  
  10. # ADD NEXT LINE
  11. $a[‘Annotate’] = ($a[‘Annotate’]==‘closed’)? 0: 1;
  12.  
  13. # FIND
  14. feed_time=‘".substr($Posted,0,10)."’,
  15.  
  16. # ADD NEXT LINE
  17. Annotate  = ‘$Annotate’,
# FIND
".$wpdbprefix."posts.ID as ID,

# ADD NEXT LINE
".$wpdbprefix."posts.comment_status as Annotate,

# FIND
foreach($articles as $a){

# ADD NEXT LINE
$a[\'Annotate\'] = ($a[\'Annotate\']==\'closed\')? 0: 1;

# FIND
feed_time=\'".substr($Posted,0,10)."\',

# ADD NEXT LINE
Annotate  = \'$Annotate\',

» 對應匯入的文章id為WP原來的文章id
在這邊我是先刪除txp安裝完成時即有的預設文章,再進行匯入動作

php · [高亮] · [原始]

  1. # FIND
  2. `".PFX."textpattern` set
  3.  
  4. # ADD NEXT LINE
  5.     ID      = ‘".$ID."’,
# FIND
`".PFX."textpattern` set

# ADD NEXT LINE
    ID		  = \'".$ID."\',

» mysql UTF8 編碼
升級到 mysql5 之後,只要安裝了新程式都會加的東西 …

php · [高亮] · [原始]

  1. # FIND
  2. mysql_select_db($b2db,$b2link);
  3.  
  4. # ADD NEXT LINE
  5. mysql_query("SET NAMES ‘utf8′", $b2link);
# FIND
mysql_select_db($b2db,$b2link);

# ADD NEXT LINE
mysql_query("SET NAMES \'utf8\'", $b2link);

3 Responses to “在 Textpattern 匯入WP的文章”

  1. 冰漾 Says:

    乾脆把檔案放出來XD

  2. taotao Says:

    能给一个修改好的完整文件吗?

    不懂程序,不会改噎

    谢谢了

  3. 浮生志 » Blog Archive » 从wordpress到textpattern Says:

    [...] 旧文 中提到的留言关闭问题已经在Textpattern · 4.0.6中得到了解决。 [...]

Leave a Comment