習作:WordpressME(xoops版)のMT形式エクスポート
WordPress ME (xoops版) → MTエクスポートを試してみました。コードなど適当なので、どなたか詳しい方のフォローをお願いします。 元のコードは、ここ(wordpress.org) から引っ張ってきました。(ライセンスも大丈夫かな? 違ったらご指摘を。。)
↑のwpexportプラグインがWordPress MEでも使えれば良かったのですが、少しいじってみたものの、どうもしっくり来なかったので、止めにしました。
以下のコードの4行目を編集してから、XOOPS_ROOT_PATH/modules/wordpress/wp-admin/フォルダ内に、例えば「mt-export.php」などで保存します。
そして、管理者でログインしてURLを直打ちすれば、、成功するかも。
★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");
?>
習作:MT形式のd3diaryインポート |
インポートScript |
BluesBB --> d3forum インポートに挑戦 |
コメント一覧
投稿ツリー
-
Re: 習作:WordpressME(xoops版)のMT形式エクスポート
(さざなみ, 2008/9/23 12:50)
-
Re: 習作:WordpressME(xoops版)のMT形式エクスポート
(なーお, 2008/9/23 21:26)
-
Re: 習作:WordpressME(xoops版)のMT形式エクスポート
(さざなみ, 2008/9/25 14:23)
-
Re: 習作:WordpressME(xoops版)のMT形式エクスポート
(なーお, 2008/9/26 7:56)
はじめまして。
捜し求めていたツールだったので即座に試してみたのですが思うように動いてくれません。。
「failed to write file」というエラーメッセージが出てしまいます。
ちなみに「cache」フォルダを指定しているのですが、書き込みは可能な設定になっております。
4行目の書き方は以下であってますでしょうか?
define('MTEXPORT', 'http://00.00.com/cache/');
当方のxoopsバージョンは0.60なのが影響しているのでしょうか?
素人質問で恐縮ですがよろしくご教授お願いします。
さざなみさん、こんにちは。
4行目は、絶対パスで書いてください。
たとえば、
4 |
|
などですね。
なお、このエクスポートは DBそのまま抽出して書き出しますので、BBコードや顔文字などはコードのままになります。
(おそらく、色々なオプション指定が必要と思うのですが、そこまで今は手が回りません。)
試してみてください。
早速のご返信ありがとうございます!
見事に抽出できました!
本当に助かりました。
素人質問に丁寧にご対応いただきありがとうございます。
さざなみさん
できましたか! おめでとうございます。
素人質問に丁寧にご対応いただきありがとうございます。
私も素人ですから。 全く問題ありません。