WordPressのエクスポート機能でダウンロードしたファイルは何が書かれているのか、確認しました

WordPressのエクスポート機能って便利ですね。以下の方法でエクスポートファイルをダウンロードできます。

WordPressのエクスポートファイルをダウンロードする方法

WordPressの管理画面から「ツール」→「エクスポート」を選びます。

wpexportxml01

エクスポート画面に移動するので、エクスポートしたい内容を選んで「エクスポートファイルをダウンロード」ボタンを押します。

wpexportxml00

すると、XML形式で書かれたエクスポートファイルのダウンロードが始まります。

以上が前置きで、以下が本題です。

エクスポートファイルを元に、細かく投稿を振り分けることになった

ダウンロードしたエクスポートファイルを元にして、新しいサイトに投稿をインポートすることがありました。

インポートする際、そのままインポートするのではなく、ルールを設けて、投稿ごとに細かく振り分けをする必要がありました。

例えば、以下のようなルールです。

  • 投稿Aはカスタム投稿タイプAの投稿としてインポートする
  • 投稿B内の本文中に特定の文字がある場合は、Bというタグをつけてカスタム投稿タイプBの投稿としてインポートする
  • 下書きの投稿は、すべてmeta情報にnoindex処理を付け加えておく

などです。ルールはもっとありますが、一例です。

というわけで、エクスポートファイルに書かれた内容を読み込んで、ルールに沿って振り分け処理のプログラムを書くことにしました。

こんなイメージで投稿を振り分けていく

wpexportxml02

初めてのことなので、今後のためにエクスポートファイルには何が書かれているのか調べました。結構いろいろと書いてあるんですが、今回は投稿データに焦点を絞って理解したことを書きました。

もし機会がありましたらご参考ください。

エクスポートファイルの中身を見てみよう

それではさっそく~。ダウンロードしたエクスポートファイルをテキストエディタで開いて、投稿データを1つ見ます。「<item>~</item>」で囲まれた部分に注目していけばOKです。

例えば下のようなデータがあったとします。

投稿データの例

ほんとはもっと記述があるんですが、今回は説明したい部分を抜粋しています。

<item>
 <title>携帯電話の月額料金って高すぎる。機種変もしたいので、freetel(フリーテル)のサービス説明会に行って話を聞いてきました</title>
 <link>https://www.imamura.biz/blog/google/android/22968</link>
 <wp:post_id>22968</wp:post_id>
 <wp:status>publish</wp:status>
 <wp:post_type>post</wp:post_type>
 <category domain="category" nicename="android"><![CDATA[android]]></category>
 <category domain="post_tag" nicename="freetel"><![CDATA[freetel]]></category>
 <category domain="post_tag" nicename="%e3%83%95%e3%83%aa%e3%83%bc%e3%83%86%e3%83%ab"><![CDATA[フリーテル]]></category>
 <category domain="post_tag" nicename="%e7%af%80%e7%b4%84"><![CDATA[節約]]></category>
 <wp:postmeta>
 <wp:meta_key>_thumbnail_id</wp:meta_key>
 <wp:meta_value><![CDATA[23021]]></wp:meta_value>
 </wp:postmeta>
</item>

一見とても複雑に見えますが、書いてあることは全然難しくないです。

上のデータは、以前書いた「携帯電話の月額料金って高すぎる。機種変もしたいので、freetel(フリーテル)のサービス説明会に行って話を聞いてきました」の投稿データです。

この投稿データを細かく分けて、何が書かれているのかを見ます。

投稿タイトル

そのまんま、タイトル名が入っています。

<title>携帯電話の月額料金って高すぎる。機種変もしたいので、freetel(フリーテル)のサービス説明会に行って話を聞いてきました</title>

投稿ID

投稿ID「22968」が入っています。

<wp:post_id>22968</wp:post_id>

投稿ステータス

「publish」は、公開済みの状態を意味しています。他の投稿ステータスはこちらをご参考ください。

<wp:status>publish</wp:status>

投稿タイプ

「post」は投稿の意味です。

<wp:post_type>post</wp:post_type>

カテゴリー

投稿が所属しているカテゴリーのスラッグは「android」で、表示名も「android」です。

<category domain="category" nicename="android"><![CDATA[android]]></category>

タグ

投稿に付けられたタグが3つあります。「freetel」「フリーテル」「節約」ですね。

<category domain="post_tag" nicename="freetel"><![CDATA[freetel]]></category>
<category domain="post_tag" nicename="%e3%83%95%e3%83%aa%e3%83%bc%e3%83%86%e3%83%ab"><![CDATA[フリーテル]]></category>
<category domain="post_tag" nicename="%e7%af%80%e7%b4%84"><![CDATA[節約]]></category>

カテゴリー、タグについて見ると、

  • カテゴリーは「domain=”category”」
  • タグは「domain=”post_tag”」

となっていますね。つまり「domain=”タクソノミー名”」で分けられているんだなぁと理解しました。

アイキャッチ(サムネイル)

アイキャッチ(サムネイル)のID「_thumbnail_id」が「23021」だよ、という意味です。アイキャッチ(サムネイル)の設定をしている場合は、投稿ID「22968」とは別に、アイキャッチ(サムネイル)のIDが書かれているんですね~。

<wp:postmeta>
 <wp:meta_key>_thumbnail_id</wp:meta_key>
 <wp:meta_value><![CDATA[23021]]></wp:meta_value>
</wp:postmeta>

というわけで、以上のように分けて見てみると理解しやすかったです。

おまけ:投稿IDやアイキャッチ(サムネイル)のIDから、添付ファイルに関するデータを見つけることもできる

エクスポートファイル内で投稿IDやアイキャッチ(サムネイル)のIDを辿ると、投稿に関連付けられた添付ファイルのデータやアイキャッチ(サムネイル)のデータを見つけることができます。

投稿ID「22968」で検索

<wp:post_parent>22968</wp:post_parent>

アイキャッチ(サムネイル)のID「23021」で検索

<wp:post_id>23021</wp:post_id>

上記のような具合で、投稿タイプが「attachment(添付)」の投稿データが見つかります。添付ファイルに関連するデータが入っていますので、もっと知りたい場合は実際にエクスポートファイルを見てみると理解が深まると思います。

まとめ

エクスポートファイルをそのままインポートするのではなく、ちょっと工夫したかったので「まずは中身を知ろう」と思って今回調べました。その甲斐があって、思った通りのことができました。

  • 「エクスポートファイルって何が書かれてるんだろう、ちょっと知りたい」
  • 「エクスポートファイルをもとにして、構成を変えてインポートしたい」

などお考えの方はご参考くださいますと幸いです。

著者:bouya Imamura