※ プラグイン「HTMLImporter」はプラグインによって対応フォーマットを追加している例です。
構成
plugins/
└ CustomImport/ (root)
├ config.json (定義ファイル)
├ CustomImport.php (プラグイン・クラス)
├ tmpl (テンプレート・ファイル)
│ └ options/
│ └ customimport.tmpl (ドロップダウン選択時に表示するフォームコントロール)
└ locale/
└ ja.json (翻訳ファイル)
定義ファイル(config.json)
レジストリ「import_format」に以下の設定を定義します。
※ customimport.tmplでは、optionsに指定する名前の前に「customimport_」を追加して name属性値とします。
例 :
<textarea name="customimport_field_settings" rows="4"></textarea>
config.json
{
"label" : "CustomImport",
"id" : "customimport",
"component" : "CustomImport",
"version" : "1.0",
"author" : "Alfasado Inc.",
"author_link" : "https://alfasado.net/",
"description" : "It provides data migration function from Custom Import format.",
"import_format": {
"customimport": {
"component" : "CustomImport",
"label" : "CustomImport",
"method" : "import_custom_import",
"models" : ["entry", "page"],
"order" : 40,
"options" : ["field_settings", "text_format"]
}
}
}
CustomImport.php
<?php
require_once( LIB_DIR . 'Prototype' . DS . 'class.PTPlugin.php' );
class CustomImport extends PTPlugin {
function __construct () {
$app = Prototype::get_instance();
$app->db->caching = false; // 大量のデータを移行する時はキャッシュオフ
if ( $max_execution_time = $app->max_exec_time ) {
$max_execution_time = (int) $max_execution_time;
ini_set( 'max_execution_time', $max_execution_time ); // タイムアウトの延長
}
parent::__construct(); // プラグインの初期化
}
function import_custom_import ( $app, $import_files, $session ) {
// $app = クラス Prototype オブジェクト
// $import_files = アップロードしたファイルの配列
// アップロードファイルは1ファイルのみですが、zipファイルをアップロードした時は
// アーカイブ内のファイルを展開したものが配列に、単一ファイルの場合も、配列で渡されます
// $session = アップロードファイルの情報をセットした sessionオブジェクト
$migrator = $app->component( 'DataMigrator' ); // クラス DataMigrator オブジェクト
$import_model = $app->param( 'import_model' ); // ラジオボタンで選択したインポート対象のモデル
$table = $app->get_table( $import_model );
if (! $table ) {
return $app->error( $this->translate( "Unknown model %s.", $import_model ), true );
}
$obj_label = $app->translate( $table->plural ); // 記事 or ページ
// 進捗の表示
$migrator->print( $this->translate( 'Start import %s...', $obj_label ) );
$text_format = $app->param( 'customimport_text_format' ); // オプションパラメタ
$field_settings = $app->param( 'customimport_field_settings' );
$workspace_id = (int) $app->param( 'workspace_id' );
// インポート処理
// $migrator->pause(); // 一時停止 : 開発・デバッグ用
$migrator->end_import( $session, $counter, $obj_label_plural ); // 終了処理
}
※ WordPress は、WordPress Foundation の登録商標です。
※ Movable Type は Six Apart Ltd. の商標または登録商標です。