Posts Tagged with wordpress

解决wordpress导入mt时的tags和slug问题

MT(4.2rc)导出的TXT文件里其实是有包含tag和slug数据的, 分别标记为TAGS和BASENAME, 只可惜目前wordpress还不支持,小小patch一下

--- wordpress/wp-admin/import/mt.php    2008-04-15 01:26:07.000000000 +0900+++ gopherwood.info/wp-admin/import/mt.php  2008-07-01 10:05:56.000000000 +0900@@ -359,6 +359,16 @@                $category = trim( substr($line, strlen("PRIMARY CATEGORY:")) );
if ( '' != $category )
$post->categories[] = $category;+ } else if ( 0 === strpos($line, "TAGS:") ) {+ $tags = trim ( substr($line, strlen("TAGS:")) );+ if ( '' != $tags ) {+ $post->post_keywords .= $tags;+ }+ } else if ( 0 === strpos($line, "BASENAME:") ) {+ $slug = trim ( substr($line, strlen("BASENAME:")) );+ if ( '' != $slug ) {+ $post->post_name = $slug;+ } } else if ( 0 === strpos($line, "DATE:") ) {
$date = trim( substr($line, strlen("DATE:")) );
$date = strtotime($date);

迁移: Wordpress 2 Textpattern

Textpattern带了Wordpress的导入脚本,本以为一帆风顺,结果却问题多多,不得已修改了一下脚本,现总结一番
*Update: 所有修改都在 textpatter/includes/import/import_wp.php*
*1. 中文乱码*
老问题了,不过一般都可以用SET NAMES查询来解决,这次也不例外

mysql_select_db($b2db,$b2link);
$results[]= 'connected to wp database. Importing Data';

改成

mysql_select_db($b2db,$b2link);
$results[]= 'connected to wp database. Importing Data';
mysql_query ("set names 'utf8';");

*2. 打开评论*
Textpattern导入文章默认是关闭评论的,这个比较郁闷
差不多刚才那个地方,紧接着是从wordpress里取出post的查询语句

$a = mysql_query("
select
".$wpdbprefix."posts.ID as ID,
".$wpdbprefix."posts.post_date as Posted,
".$wpdbprefix."posts.post_title as Title,
".$wpdbprefix."posts.post_content as Body,
".$wpdbprefix."users.user_login as AuthorID
from ".$wpdbprefix."posts
left join ".$wpdbprefix."users on
".$wpdbprefix."users.ID = ".$wpdbprefix."posts.post_author
",$b2link) or $results[]= mysql_error();

修改查询语句,取出原来post的评论状态字段:

$a = mysql_query("
select
".$wpdbprefix."posts.ID as ID,
".$wpdbprefix."posts.post_date as Posted,
".$wpdbprefix."posts.post_title as Title,
".$wpdbprefix."posts.post_content as Body,
".$wpdbprefix."posts.comment_status as CommentStatus, /* 评论状态 */
".$wpdbprefix."users.user_login as AuthorID
from ".$wpdbprefix."posts
left join ".$wpdbprefix."users on
".$wpdbprefix."users.ID = ".$wpdbprefix."posts.post_author
",$b2link) or $results[]= mysql_error();

保存post到textpattern的查询语句也要修改:

$q = mysql_query("
insert into `".PFX."textpattern` set
Posted = '".addslashes($Posted)."',
Title = '".addslashes($textile->TextileThis($Title,1))."',
url_title = '".stripSpace($Title,1)."',
Body = '".addslashes($Body)."',
Body_html = '".addslashes($Body_html)."',
AuthorID = '".addslashes($AuthorID)."',
Category1 = '".addslashes($Category1)."',
Category2 = '".addslashes($Category2)."',
Section = '$insert_into_section',
uid='".md5(uniqid(rand(),true))."',
feed_time='".substr($Posted,0,10)."',
AnnotateInvite = '$default_comment_invite',
Status = '$insert_with_status'
",$txplink) or $results[]= mysql_error();

改成:

$q = mysql_query("
insert into `".PFX."textpattern` set
Posted = '".addslashes($Posted)."',
Title = '".addslashes($textile->TextileThis($Title,1))."',
url_title = '".stripSpace($Title,1)."',
Body = '".addslashes($Body)."',
Body_html = '".addslashes($Body_html)."',
AuthorID = '".addslashes($AuthorID)."',
Category1 = '".addslashes($Category1)."',
Category2 = '".addslashes($Category2)."',
Annotate = '".addslashes($CommentStatus == 'closed' ? 0 : 1)."',
Section = '$insert_into_section',
uid='".md5(uniqid(rand(),true))."',
feed_time='".substr($Posted,0,10)."',
AnnotateInvite = '$default_comment_invite',
Status = '$insert_with_status'
",$txplink) or $results[]= mysql_error();

*3. 永久链接*
textpattern的永久链接真是不敢恭维,居然不支持中文,如果直接导入的话,所有的文章永久链接里的中文都将丢失,当然用id方式的没关系,但是对于我等使用/year/month/day/title格式的就...为了保持无缝切换(因为之前wp的永久链接就是这个格式),对脚本再一次修改
因为所涉及的查询语句和之前打开评论的完全一样,所以简单说一下,不再重复
1) 取出链接
在刚才插入

".$wpdbprefix."posts.comment_status as CommentStatus,

的地方再插入一句

".$wpdbprefix."posts.post_name as PostName,

2) 保存链接
在刚才插入

Annotate = '".addslashes($CommentStatus == 'closed' ? 0 : 1)."',

的地方找到

url_title = '".stripSpace($Title,1)."',

修改成

url_title = '".addslashes($PostName)."',

*4. 用户显示名称*
之前用wp一直用admin用户发表文章,但是显示名称改成了自己的名字,这样导入的话所有文章的作者名字都会是原始的admin,是个小问题,不过总是看着不舒服,一道改了
找到

.$wpdbprefix."users.user_login as AuthorID

修改为

".$wpdbprefix."posts.post_name as PostName,

*5. tags丢失*
当然这个是对于wp 2.3以上用户而言
在取出post之后是一个while循环,挨个处理post,就在这里取tags吧
找到

while($b=mysql_fetch_array($a)) {
//Clean ugly wp slashes before to continue
$b = undoSlash(undoSlash($b));

在后面加入:

$tags = "";
$t = "
select t.name from
".$wpdbprefix."terms AS t,
".$wpdbprefix."term_relationships AS r,
".$wpdbprefix."posts AS p,
".$wpdbprefix."term_taxonomy as ta
where
p.id=".$b['ID']." and p.id=r.object_id and r.term_taxonomy_id=ta.term_id and ta.term_id=t.term_id and ta.taxonomy='post_tag';
";
$e = mysql_query($t, $b2link) or $results[] = mysql_error();
$tag = mysql_fetch_assoc ($e);
if ($tag) {
$tags = $tag['name'];
while ($tag=mysql_fetch_assoc ($e)) {
$tags = $tags . ',' . $tag['name'];
}
$b['tags'] = $tags;
}

tag取出来了,再作为keyword保存就很简单了,在保存post的地方,也就是在刚才插入

Annotate = '".addslashes($CommentStatus == 'closed' ? 0 : 1)."',

的地方,加入一句

Keywords = '".addslashes($tags)."',

这样就差不多了,然后转个tru_tags插件就和以前一样了
*其实2.3版本的wp已经取消了分类的数据库表,而是和tag的数据库表合并起来,所以textpattern(4.0.5)的导入脚本是不支持tags并且也不能正确导入分类的*

解决Safari的Wordress兼容性问题

前几天还在头疼Mac下面没有个完美的浏览器,其实个人一直很倾向用safari,毕竟是Mac自家的东西,一直不死心用Camino代替…今天终于被我找到了解决方案,哇哈哈哈

其实说也很简单,就是欺骗一下网站,把safari识别成firefox就ok了,步骤如下:

1.安装SIMBL,方法很简单,不多说了

2.安装SafariStand

把SafariStand.bundle文件复制到SIMBL的插件目录,默认是/Library/Application Support/SIMBL/Plugins

3.重启Safari,看到上面的Stand菜单了么,就在Help边上,打开SafariStand Setting,在最右边最下面有一个 Including Debug Menu,选中,再次重启Safari

4.这回在Stand菜单边上又多出来一个Debug菜单,单击Debug,找到User Agent,看到了吧,选Firefox 2.0.0.2

ok,回去wordpress的post编辑看看,一切正常

PS:又试了试百合,也一切ok了,hoho

BloggingPro China (wordpresscn) 无偿转让

突然看到海豚要转让 wordpresscn,大吃一惊

 由于个人精力有限作出转让本站决定,有意者可以与我联系:kdolphin[at]gmail.com
  • 转让包括wordpresscn.com域名和现有站点数据。
  • 希望接受者仍然把本域名作为一个wordpress的信息站来建设。
  • 希望接受者对wordpress有比较深的了解。
  • 转让费用是100元人民币,仅仅是弥补域名注册费用。
  • 转让域名产生的费用由接收者负担。
  • 接收者空间请自行解决。
  • 接收者如使用国内服务器,请注意备案。


转让后我会把更多的时间放在kdolphin.com18pc.org这两个Blog上,有兴趣的可以去捧捧场。

突然易主难免让人觉得有些可惜,不过如果能有有心人接下来的话应该也很有发展的,可惜个人精力实在有限。。。要不。。。

TagConverter Mod

终于顺利升级到wordpress2.3,最大的变化是新版的wordpress内建了tag系统,这样一来原本的utw就没有什么存在的必要了。但是如何平滑过度到新版的tag系统倒是个头疼的问题,尽管wordpress自身提供了导入utw tag的功能,再配合TagConverter插件,也实现了related post和embedded tag的功能,但是仍旧有一个小小的不足,就是原本使用embedded嵌入的tag已经没有了。

怎么看都不爽,于是决定解决这个问题。不过对于我这种实在是懒得可以的人。。。hack一下TagConverters似乎比重写一个插件要方便很多,于是就有了这个mod版本:后台TagConverter的配置页面中增加了import embedded tag的功能,用来将所有帖子里的embedded tag全部恢复出来。遇到和我一样问题的同学试试这个版本吧 :)

TagConverterMod