トップ  >  趣味の部屋  >  XOOPSサイト構築  >  インポートScript  >  習作:WordpressME(xoops版)のMT形式エクスポート
xoops エクスポート

習作:WordpressME(xoops版)のMT形式エクスポート

WordPress ME (xoops版) → MTエクスポートを試してみました。

コードなど適当なので、どなたか詳しい方のフォローをお願いします。 元のコードは、ここ(wordpress.org) から引っ張ってきました。(ライセンスも大丈夫かな? 違ったらご指摘を。。)
↑のwpexportプラグインがWordPress MEでも使えれば良かったのですが、少しいじってみたものの、どうもしっくり来なかったので、止めにしました。

以下のコードの4行目を編集してから、XOOPS_ROOT_PATH/modules/wordpress/wp-admin/フォルダ内に、例えば「mt-export.php」などで保存します。
そして、管理者でログインしてURLを直打ちすれば、、成功するかも。

一応、WordpressME-0.50 からエクスポートしたファイルを、d3blogにインポートできることは確認済みです。 エクスポートできれば、nobunobuさんのツールでWordpressMEにもインポートできるはず。。

★DBから直に引っ張ってくるだけなので、サニタイズ処理などは一切ないです。 必要ならエクスポートしたテキストファイルを編集するか、引越し先でインポート後に編集ということになります。

コード

<?php
global $wpdb;
$output = '';
define('MTEXPORT', ''); // ←ここにMT形式ファイルのフルパスを記載 (cacheフォルダなど、書き込み権限のあるフォルダを指定すること。)
 
require_once('admin.php');
require("admin-header.php");
require('../wp-config.php');

if ('' == MTEXPORT) {
	echo ("You must edit the MTEXPORT line as described to continue.");
	break;
}

$tableusers = $wpdb->users[$wp_id];
$tableposts = $wpdb->posts[$wp_id];
$tablepost2cat = $wpdb->post2cat[$wp_id];
$tablecategories = $wpdb->categories[$wp_id];
$tablecomments =  $wpdb->comments[$wp_id];

$query = "SELECT p.post_date, p.post_content, p.post_title, u.user_nickname, p.post_status, c.comment_author,  c.comment_content, c.comment_author_email,  c.comment_author_url, c.comment_date,  p2c.category_id, cat.cat_name FROM " .$tablecomments ." c RIGHT JOIN " .$tableposts ." p  ON  c.comment_post_ID  = p.ID  LEFT JOIN "  .$tableusers ." u ON  p.post_author  =  u.ID  LEFT JOIN "  .$tablepost2cat ." p2c ON   p.ID  =  p2c.post_id  LEFT JOIN " .$tablecategories ." cat ON p2c.category_id =cat.cat_ID ";

     $result = $wpdb->query($query);
        if ($result){
	  $i=0;
	  while( $row = $wpdb->get_row(null,OBJECT,$i)) {
	    if ($prev_entry == $row->post_date) {
				$present_cat = $row->cat_name;
				if ($prev_cat == $present_cat) {
					if ($row->comment_content) {
						$output .= "COMMENT:\n";
						$output .=  "AUTHOR: ".stripslashes($row->comment_author)."\n";
						$output .=  "EMAIL: ".stripslashes($row->comment_author_email)."\n";
						$output .=  "URL: ".stripslashes($row->comment_author_url)."\n";
						$output .=  "DATE: ".date("m/d/Y h:m:s A",(strtotime($row->comment_date)))."\n";
						$output .=  stripslashes(str_replace("<br />", "", $row->comment_content))."\n";
						$output .=  "-----\n";
					}
				}
            } else {
		if ($i > 0 ) $output .= "--------\n";
		$output .=  "\n";
		$output .=  "AUTHOR: ".stripslashes($row->user_nickname)."\n";
		$output .=  "TITLE: ".stripslashes($row->post_title)."\n";
		$status = stripslashes($row->post_status);
		if ($status =='publish') {
			$output .=  "STATUS: ".$status."\n";
		} else {
			$output .=  "STATUS: draft\n";
		}

		$date = $row->post_date;
		$output .=  "DATE: ".date("m/d/Y h:m:s A",(strtotime($date)))."\n";
		$output .=  "CATEGORY: ".stripslashes($row->cat_name)."\n";
		$output .=  "-----\n";
		$output .=  "BODY:\n";
		$output .=  stripslashes(str_replace("<br />", "", $row->post_content))."\n";
		$prev_entry = $row->post_date;
		$prev_cat = $row->cat_name;
		if ($row->comment_content != "") {
			$output .=  "-----\n";
			$output .=  "COMMENT:\n";
			$output .=  "AUTHOR: ".stripslashes($row->comment_author)."\n";
			$output .=  "EMAIL: ".stripslashes($row->comment_author_email)."\n";
			$output .=  "URL: ".stripslashes($row->comment_author_url)."\n";
			$output .=  "DATE: ".date("m/d/Y h:m:s A",(strtotime($row->comment_date)))."\n";

			$output .=  stripslashes(str_replace("<br />", "", $row->comment_content))."\n";
			$output .=  "-----\n";
		}
		$output .=  "\n";
		$output .=  "--------\n";
              }
              
		$i = $i +1;
	    } 
	}

			if ($fp = fopen(MTEXPORT, 'wb')) {
				flock($fp, LOCK_EX);
				fwrite($fp, $output);
				fclose($fp);

				echo ("succeeded to write file (".$i .")");

			} else {
				echo ("failed to write file");
			}


include_once("admin-footer.php");
?>

プリンタ用画面
投票数:98 平均点:4.18
前
習作:MT形式のd3diaryインポート
カテゴリートップ
インポートScript
次
BluesBB --> d3forum インポートに挑戦

コメント一覧

投稿ツリー


さざなみ   投稿日時 2008/9/23 12:50

はじめまして。
捜し求めていたツールだったので即座に試してみたのですが思うように動いてくれません。。
「failed to write file」というエラーメッセージが出てしまいます。
ちなみに「cache」フォルダを指定しているのですが、書き込みは可能な設定になっております。

4行目の書き方は以下であってますでしょうか?
define('MTEXPORT', 'http://00.00.com/cache/');

当方のxoopsバージョンは0.60なのが影響しているのでしょうか?
素人質問で恐縮ですがよろしくご教授お願いします。

なーお  投稿日時 2008/9/23 21:26

さざなみさん、こんにちは。 :-)

4行目は、絶対パスで書いてください。
たとえば、

4
define('MTEXPORT', '/home/(account)/public_html/(site_dirname)/cache/mtdata.php'); // ←ここにMT形式ファイルのフルパスを記載 (cacheフォルダなど、書き込み権限のあるフォルダを指定すること。)

などですね。  :-D

なお、このエクスポートは DBそのまま抽出して書き出しますので、BBコードや顔文字などはコードのままになります。
(おそらく、色々なオプション指定が必要と思うのですが、そこまで今は手が回りません。)

試してみてください。 :-D

さざなみ   投稿日時 2008/9/25 14:23

早速のご返信ありがとうございます!
見事に抽出できました!
本当に助かりました。
素人質問に丁寧にご対応いただきありがとうございます。

なーお  投稿日時 2008/9/26 7:56 | 最終変更

さざなみさん

できましたか! おめでとうございます。 :-)

引用:
素人質問に丁寧にご対応いただきありがとうございます。

私も素人ですから。 :-P 全く問題ありません。



新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ