成功将Sablog-X数据导入Wordpress

数据库修复中,部分文章可能暂时无法阅读。

在这里首先要感谢YanChenguang大哥sablog-x1.6到WordPress2.3.2数据转换程序

经验证同样适用于目前的最新版本Wordpress 2.5。

<?php
/**
 * 使用说明,请务必阅读:
 * 将sablog-x(1.6)的数据导入 wordpress(2.3.2)数据库
 *
 * 此文件运行的前提条件:
 * 1、本程序需要放在wordpress目录wp-admin下
 * 1、sablog-x数据库和wordpress数据库最好放在同一台MySQL服务器上
 * 2、wordpress的表已经建好,并且没有有用的数据
 *
 * 按要求放置好程序并做好准备以后,请在浏览器里运行 :http://yourblogurl/wp-admin/sablogx1.6towp2.3.2.php
 * 如果您的文章数比较多,请耐心等待,直到页面出现 "Finish!" 字样,即为转换成功。
 *
 * 此外:本程序只会对文章、分类、友情链接和评论进行转换,但不会转换用户,所以请另行添加用户数据
 *
 * Author: Kedy (http://www.kedy.cn QQ:49268533 YanChenguang@gmail.com)
 * Date : 2008-01-14
 **/

//saglog-x数据库设置
$sax_db_host = 'localhost';	//数据库主机
$sax_db_user = 'root';		//数据库用户名
$sax_db_pass = '';				//数据库密码
$sax_db_name = 'blog';		//数据库名
$sax_db_prefix = 'sl_';		//sablog-x数据库表前缀
$sax_db_charset = 'utf8';

set_time_limit(0);

$sax_db_lnk = mysql_connect($sax_db_host, $sax_db_user, $sax_db_pass);
mysql_select_db($sax_db_name, $sax_db_lnk);
mysql_query('SET NAMES '. $sax_db_charset);

//处理分类
//cid 	name 	displayorder 	articles
$sql = "SELECT * FROM {$sax_db_prefix}categories";
$query = mysql_query($sql);
$categories = array();
while($arr = mysql_fetch_array($query, MYSQL_ASSOC)){
	$categories[$arr['cid']] = $arr;
}

//处理文章
$sql = "SELECT * FROM {$sax_db_prefix}articles";
$query = mysql_query($sql);
$articles = array();
while($arr = mysql_fetch_array($query, MYSQL_ASSOC)){
	$articles[$arr['articleid']] = $arr;
}

//处理链接
$sql = "SELECT * FROM {$sax_db_prefix}links";
$query = mysql_query($sql);
$links = array();
while($arr = mysql_fetch_array($query, MYSQL_ASSOC)){
	$links[$arr['linkid']] = $arr;
}

//处理评论
$sql = "SELECT * FROM {$sax_db_prefix}comments";
$query = mysql_query($sql);
$comments = array();
while($arr = mysql_fetch_array($query, MYSQL_ASSOC)){
	$comments[$arr['commentid']] = $arr;
}

require('admin.php');

foreach($categories as $cid => $val){
	$_data = array();
	$_data['category_parent'] = '-1';
	$_data['category_description'] = $val['name'];
	$_data['cat_name'] = $val['name'];

	$new_cat_id = wp_insert_category($_data);
	$categories[$cid]['new_cid'] = $new_cat_id;
}

foreach($articles as $aid => $article){
	$arr = $article;
	$_tmp_time = date('Y-n-j-H-i-s', $arr['dateline']);
	list($arr['aa'], $arr['mm'], $arr['jj'], $arr['hh'], $arr['mn'], $arr['ss']) = explode('-', $_tmp_time);
	$arr['edit_date'] = 1;
	$arr['user_ID'] = $arr['uid'];
	$arr['post_content'] = $arr['content'];
	$arr['post_title'] = $arr['title'];
	$arr['post_pingback'] = $arr['closetrackback'];
	$arr['post_category'] = array($categories[$arr['cid']]['new_cid']);
	$arr['tags_input'] = $arr['keywords'];
	$arr['post_type'] = 'post';
	$arr['post_status'] = $arr['visible'] == 1 ? 'publish' : 'draft';

	$arr['comment_status'] = $arr['closecomment'] == 0 ? 'open' : 'close';
	$arr['ping_status'] = $arr['closetrackback'] == 0 ? 'open' : 'close';
	$arr['post_password'] = $arr['readpassword'];

	$user_ID = $arr['uid'];
	$_POST = $arr;
	$ret = wp_write_post();

	$articles[$arr['articleid']]['new_articleid'] = $ret;
}

foreach($links as $linkid => $linkdata){
	$_data = array();
	$_data['link_category'] = array(2);
	$_data['link_visible'] = 'Y';
	$_data['link_name'] = $linkdata['name'];
	$_data['link_url'] = $linkdata['url'];
	$_data['link_description'] = $linkdata['note'];
	wp_insert_link($_data);
}

require_once('../wp-includes/comment.php');

foreach($comments as $cmtid => $cmtdata){
	$_data = array();

	$user_ID = 0;
	$comment_post_ID = $articles[$cmtdata['articleid']]['new_articleid'];
	$comment_author = $cmtdata['author'];
	if(strpos($cmtdata['url'], '@')){
		$comment_author_email = $cmtdata['url'];
		$comment_author_url = '';
	}else{
		$comment_author_url = $cmtdata['url'];
		$comment_author_email = '';
	}
	$comment_content = $cmtdata['content'];
	$comment_type = '';

	$commentdata['comment_author_IP'] = preg_replace( '/[^0-9., ]/', '', $cmtdata['ipaddress']);
	$commentdata['comment_agent']     = $_SERVER['HTTP_USER_AGENT'];

	$commentdata['comment_date']     = $cmtdata['dateline'];
	$commentdata['comment_date_gmt'] = $cmtdata['dateline'];

	$comment_author_email = $cmtdata['author'];
	$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'user_ID');
	$comment_ID = wp_insert_comment($commentdata);
}

echo 'Finish!';
?>

【 对不起,这篇文章暂时还没有其他的关联文章。】

《 成功将Sablog-X数据导入Wordpress 》已经有了 2 篇评论。

  1. 我说谁的FEED一下子更新这么多···
    原来是你这里 - -

    [回复该评论]

  2. :) 呵呵 是啊,顺便把Feed也更新了。

    [回复该评论]

我想说说 ……


:mrgreen: :| :twisted: :arrow: 8O :) :? 8) :evil: :D :idea: :oops: :P :roll: ;) :cry: :o :lol: :x :( :!: :?: