SOY CMS / SOY Shop

ブログトップ

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に詳しい方がいましたら、

修正してもらえると助かります。