Posts tagged wordpress

wordpress迁移到ghost时,slug长度错误的处理

在把blog从wordpress迁移到ghost,从后台界面导入数据的时候出现如下报错:

A problem was encountered while importing new content to your blog. Error: Property ‘slug’ exceeds maximum length of 150 (element:posts / id:15)

搜索之后发现碰到这类错误的还不少,但都没有好的解决方案。仔细研究之后发现这个错误是由wordpress和ghost对slug这个字段的长度限制不一导致,wordpress对slug的长度限制是250个字符,而ghost的限制是150字符,即如果原来的wordpress文章标题过长就会碰到这个问题。

解决方法有二,一是修改wordpress导出数据,将所有文章的slug手动修改到150字符以内,如果原始文章数据较多这将会有不小的工作量,而且还会改变文章的url;另一则是修改ghost对slug字段的限制,这是比较彻底的方法,下面是操作方法。

对ghost下面slug字段长度的修改分为如下两步:

1. 修改sqlite3数据库中表posts中的字段类型,请将$GHOSTDIR替换为ghost目录路径

cd $GHOSTDIR/content/data/
cp ghost-dev.db ghost-dev.db_$(date +%Y%m%d)
sqlite3 ghost-dev.db ".dump posts" | sed -e 's/"slug" varchar(150)/"slug" varchar(250)/' > posts.dump
sqlite3 ghost-dev.db ".read ./posts.dump"
rm posts.dump

2. 修改ghost源码里面对slug字段长度的检测:

cd $GHOSTDIR/core/server/data/
cp schema.js schema.js_$(date +%Y%m%d)
sed -i "s/slug: {type: 'string', maxlength: 150/slug: {type: 'string', maxlength: 250/g" schema.js

修改完毕,重启npm,重新导入数据即可。

cd $GHOSTDIR/
killall node npm
npm start

How to enable XML-RPC on your wordpress blog

刚刚从movable type转移到wordpress 2.7的平台,仍习惯用windows live writer来更新post,但设置的时候居然提示我“xml-rpc services are disabled on this blog”,原来在新的wordpress平台上出于安全的考虑默认xml-rpc services是关闭的,但现在要使用live writer就得手动开启这个服务了,刚开始还一直在options-writing.php 里找该修改哪段代码,google了一下,原来直接进后台设置就OK了。

How to enable XML-RPC on your wordpress blog?
Login as Admin to your wordpress blog.
Click on Settings.
Click on Writing under Settings Menu.
Click on the check box named XML-RPC [Enable the WordPress, Movable Type, MetaWeblog and Blogger XML-RPC publishing protocols.]
Save the settings.