WordPressで構築していたサイトがあるのですが、どうもブログとしてかいていくのには不向きなネタっぽいので、事典的に使えるMediaWikiに移行することを考えた。
※このデータはカテゴリー、タグ、通常の投稿のみがはいったものです
コンバートする前にまず行わなくてはいけないこと。
目次
- 1 WXR形式のファイルをダウンロード
- 2 検索置換
- 2.1 ヘッダー・フッターをまずは入れ替え
- 2.2 [正規表現]タームIDを除去
- 2.3 [正規表現]カテゴリーニックネームIDを除去
- 2.4 [正規表現]親カテゴリー情報を除去
- 2.5 [正規表現]親カテゴリー名を整形
- 2.6 [正規表現]親カテゴリー名を整形
- 2.7 未分類を削除
- 2.8 タグを変更
- 2.9 [正規表現]タグスラッグ除去
- 2.10 [正規表現]カテゴリー説明文を本文へ
- 2.11 <wp:tag_name>を<title>に
- 2.12 <wp:term>~</wp:term>削除
- 2.13 generator削除
- 2.14 item>の置換
- 2.15 [正規表現]いらないタグを除去する
- 2.16 一時的に閉じタグを除去する
- 2.17 タグの置換をチェック
- 2.18 ページ内容・HTMLのチェック
- 2.19 [正規表現]classを除去する
- 2.20 画像
- 2.21 内部リンク
- 3 外部リンク
WXR形式のファイルをダウンロード
WordPressのツールにある、エクスポート機能を使ってデータをダウンロードします。
<?xml version="1.0" encoding="UTF-8" ?>
<!-- This is a WordPress eXtended・・・・
というファイルが落ちてくるので、それを秀丸で開きます。
検索置換
ヘッダー・フッターをまずは入れ替え
<?xml ~略~</wp:author>
上記ヘッダーを除去してしまう。
こちらに入れ替え
<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.10/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.10/ http://www.mediawiki.org/xml/export-0.10.xsd" version="0.10" xml:lang="ja">
最後に閉じている
</rss>
を
</mediawiki>
に置換
[正規表現]タームIDを除去
タームIDを除去する
<wp:term_id>((\d)+)</wp:term_id>
↓
削除
[正規表現]カテゴリーニックネームIDを除去
カテゴリーニックネームを除去する。
<wp:category_nicename>(.)+</wp:category_nicename>
↓
削除
[正規表現]親カテゴリー情報を除去
親カテゴリー情報を除去する
<wp:category_parent>(.)+</wp:category_parent>
↓
削除
[正規表現]親カテゴリー名を整形
<wp:cat_name>((.)+)</wp:cat_name>
↓
<title>Category:\1</title>
[正規表現]親カテゴリー名を整形
<wp:cat_name>((.)+)</wp:cat_name>
↓
<title>Category:\1</title>
未分類を削除
<wp:category>
<title>Category:未分類</title>
</wp:category>
↓
削除
タグを変更
wp:category>
↓
page>
wp:tag>
↓
page>
[正規表現]タグスラッグ除去
タグスラッグを除去する
<wp:tag_slug>((.)+)</wp:tag_slug>
↓
削除
[正規表現]カテゴリー説明文を本文へ
<wp:category_description>((.)+)</wp:category_description>
↓
<revision>
<text xml:space="preserve">\1</text>
</revision>
<wp:tag_name>を<title>に
タイトルは改行してはいけない。<title>●●●</title>とする。
XMLなので、エンティティ化しないとうまく読み込めないことも。&等。
wp:tag_name>
↓
title>
<wp:term>~</wp:term>削除
<wp:term>~</wp:term>
で囲われたところがあるのでまとめて削除する
↓
削除
generator削除
generatorはいらないので削除
<generator>****</generator>
↓
削除
item>の置換
item>
↓
page>
[正規表現]いらないタグを除去する
<excerpt:encoded></excerpt:encoded>
↓
削除
<wp:post_id>(.)+</wp:post_id>
↓
削除
<wp:post_date>(.)+</wp:post_date>
↓
削除
<wp:post_date_gmt>(.)+</wp:post_date_gmt>
↓
削除
<wp:comment_status>(.)+</wp:comment_status>
↓
削除
<wp:ping_status>(.)+</wp:ping_status>
↓
削除
<wp:post_name>(.)+</wp:post_name>
↓
削除
<link>(.)+</link>
↓
削除
<wp:(.)+$
↓
削除
</wp:postmeta>
↓
削除
<pubDate>(.)+</pubDate>
↓
削除
<dc:creator>(.)+</dc:creator>
↓
削除
<guid(.)+/guid>
↓
削除
<content:encoded>
↓
<revision>
</content:encoded>
↓
</text>
</revision>
<category domain="category" nicename="(.)+">((.)+)
↓
[[Category:\2
<category domain="post_tag" nicename="(.)+">((.)+)
↓
[[Category:\2
</category>
↓
]]
一時的に閉じタグを除去する
改行とタブを全て消した状態で、
</text></revision>
↓
削除
タグの置換をチェック
タグ(MediaWikiなので、カテゴリーに変更します)のページ内容に「××のカテゴリ」を入れます。
<title>((.)+)</title></text></revision>
↓
<title>\1</title><revision><text xml:space="preserve">\1のカテゴリ。</text></revision>
ページ内容・HTMLのチェック
<img>はいらなければ除去する
置換して、アップされている画像をMediaWikiに移設する場合は以下の通り。
※example.comを例にしています
※WordPressはファイルがかぶらないようになっているのでなんとかなります
[正規表現]classを除去する
altの除去
class=[\'"]([^\'"]+)[\'"]
↓
削除
alt=[\'"]([^\'"]+)[\'"]
↓
削除
width=[\'"]([^\'"]+)[\'"]
↓
削除
height=[\'"]([^\'"]+)[\'"]
↓
削除
画像
<img((.)+)src=[\'"]([^\'"]+)[\'"]((.)+)>
↓読み込めるファイルに変換する
[[File:\2]]
\[\[File:http://(.)+/wp-content/uploads/(.)+/(.)+/((.)+)\]\]
↓URLを除去する(http://~uploads/xx/xx/フォルダのところ)
[[File:\4]]
内部リンク
エクスポートしたWordPressサイトのaタグのリンク先を変更する。
※example.comはWordPressサイトのURL
<a(.)+href=\"http://example.com(.)+\">
↓タイトルをリンクに変更する(※MediaWikiにページとして、インポートするのを前提で)
[[
</a>
↓
]]
外部リンク
<a(.)+href=\"((.)+)\"((.)*)>((.)+)</a>
↓タイトルをリンクに変更する(※MediaWikiにページとして、インポートするのを前提で)
[\2 \4]
target="_blank"
↓
削除
<wbr />タグ
改行してもいいよタグなので、これはそのままで。
CDATAに変換
タグを入れてしまうとうまく読み込まれないため、CDATAで囲う
でも、思ったようにはうまくいかないことも。
タグは外しておいたほうがいいかもしれないが、ネストしたリストなどが難しいので悩むところ・・・。
<text xml:space="preserve">
↓
<text xml:space="preserve"><![CDATA[
</text>
↓
]]></text>
attachment
画像などの添付ファイルもダウンロードしてしまったら、その記事を除去しておきます。