WordPress形式エントリーデータインポートプラグイン開発2
2009.10.14
前回は
WPインポートプラグインがどんな感じで動作するのか?
ロジックはどこに記載するのか?
という軽い説明で終わりました。
WordPress形式エントリーデータインポートプラグイン開発
今回はSOY2DAOを見ることにしましょう。
SOY2DAOを使うに当たって、
始めに何をインポートするのかを考えてみる必要があります。
今回はWPエントリーデータをインポートするのが目的なので、
エントリーデータをSOY CMSのDBにインサートすることが重要になります。
( エントリーにひもづくコメントは今回は省略します )
そこで、コードの始めに
SOY2::import("domain.cms.Entry");
$db = new SOY2DAO();
と記載し、
Entry.class.phpのインクルードとSOY2DAOクラスのコンストラクトを行います。
WordPressからエクスポートされるデータはXML形式なので、
simpleXMLでエントリーデータをインポートします。
$list = simpleXML_load_string($data, NULL, LIBXML_NOCDATA);
インポートしたWPエントリーデータを一度配列に返す。
$wpentry = array();
//XMLからインポートしたオブジェクトを配列に返す
foreach($list->channel->item as $entry){
$wpentry = array();
//WordPressのエントリー部分
$wpentry["title"] = (string)$entry->title;
$wpentry["content"] = (string)$entry->content;
$wpentry["cdate"] = (string)$entry->post_date;
$wpentry["isPublished"] = (string)$entry->status;
}
$wpentrys[] = $wpentry;
( SOY CMS用にcdateをタイムスタンプに変換等のコードは割愛 )
では、
先程取得したWPのエントリーデータをSOY CMSのDBにインサートしていきましょう。
始めにDAOの準備を行います。
$dao = SOY2DAOFactory::create("cms.EntryDAO");
$import = new Entry();
Entryクラスをコンストラクトします。
SOY2DAOでのDBへのインサートは
Entry.class.phpにあるメソッドを
$import->setTitle(); ( 引数には挿入したい値 )
とし、
全ての値を入れ終わったら、
$dao->insert($import);
でエントリーデータのインサートが終了する。
( 例 )
foreach($wpentrys as $entry){
$import->setTitle($entry["title"]);
$import->setContent($entry["content"]);
$import->setCdate($entry["cdate"]);
$import->setIsPublished($entry["isPublished"]);
$dao->insert($import);
}
( foreachで挿入するエントリーの数分だけDBにインサートする )
色々端折りましたが、
SOY2DAOの説明を終了します。
追記
今回紹介したWPインポートプラグインは
必要な機能というのがたくさんあります。
( トラックバックやピンバックの機能など )
WordPressに詳しい方がいましたら、
修正してもらえると助かります。