为什么要迁移?
hexo需要懂一点技术,而且SEO不方便,且正好看到某云服务商的服务器有优惠,果断搭建一个WordPress,
WordPress相比hexo,运营起来更方便,而且。
迁移步骤
安装feed插件
首先要将hexo文章导出,这里使用了hexo-generator-feed
,在 _config.yml
中配置:
1 2 3 4 5 6 7
|
feed: type: rss2 path: rss.xml limit: 0 hub: content: true template: wordpress-rss-tpl.xml
|
wordpress-rss-tpl.xml
为自定义的模板文件,内容如下:
查看代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
<?xml version="1.0" encoding="utf-8"?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wp="http://wordpress.org/export/1.2/"> <channel> <wp:wxr_version>1.2</wp:wxr_version> <title>{{ config.title }}</title> <link>{{ url }}</link> {% if icon %} <image> <url>{{ icon }}</url> <title>{{ config.title }}</title> <link>{{ url }}</link> </image> {% endif %} <atom:link href="{{ feed_url | uriencode }}" rel="self" type="application/rss+xml"/> {% if config.feed.hub %}<atom:link href="{{ config.feed.hub | uriencode }}" rel="hub"/>{% endif %} <description>{{ config.description }}</description> <pubDate>{% if posts.first().updated %}{{ posts.first().updated.toDate().toUTCString() }}{% else %}{{ posts.first().date.toDate().toUTCString() }}{% endif %}</pubDate> <generator>http://hexo.io/</generator> {% for post in posts.toArray() %} <item> <wp:post_type><![CDATA[post]]></wp:post_type> <title>{{ post.title }}</title> <link>{{ post.permalink | uriencode }}</link> <guid>{{ post.permalink | uriencode }}</guid> <pubDate>{{ post.date.toDate().toUTCString() }}</pubDate> {% if post.description %} <description>{{ post.description }}</description> {% elif post.intro %} <description>{{ post.intro }}</description> {% elif post.excerpt %} <description>{{ post.excerpt }}</description> {% elif post.content %} {% set short_content = post.content.substring(0, config.feed.content_limit) %} {% if config.feed.content_limit_delim %} {% set delim_pos = short_content.lastIndexOf(config.feed.content_limit_delim) %} {% if delim_pos > -1 %} <description>{{ short_content.substring(0, delim_pos) }}</description> {% else %} <description>{{ short_content }}</description> {% endif %} {% else %} <description>{{ short_content }}</description> {% endif %} {% endif %} {% if post.image %} <enclosure url="{{ url + post.image | uriencode }}" type="image"/> {% endif %} {% if config.feed.content and post.content %} <content:encoded><![CDATA[{{ post.content | noControlChars | safe }}]]></content:encoded> {% endif %} {% for category in post.categories.toArray() %} <category domain="category" nicename="{{ category.name }}">{{ category.name }}</category> {% endfor %} {% for tag in post.tags.toArray() %} <category domain="post_tag" nicename="{{ tag.name }}">{{ tag.name }}</category> {% endfor %} {% if post.comments %} <comments>{{ post.permalink | uriencode }}#disqus_thread</comments> {% endif %} </item> {% endfor %} </channel> </rss>
|
该模板解决了几个手工操作的步骤:
- 添加命名空间:
xmlns:wp="http://wordpress.org/export/1.2/"
- 编辑
atom.xml
,在 <channel>
下一级添加:
1
|
<wp:wxr_version>1.2</wp:wxr_version>
|
- 每篇文章中添加文章类型
1
|
<wp:post_type><![CDATA[post]]></wp:post_type>
|
(可以偷个懒,使用全局替换</title>
-> </title><xxx>yyy</xxx>
)
- 修改发布时间
<pubDate> -> <wp:post_date>
,且时间格式为:YYYY-MM-DD HH:mm:ss
执行 hexo g
,生成 public/rss.xml
;
这时,仍然有两个问题还未解决:
- hexo文章里的图片是相对路径
- 使用WordPress现有分类
修改图片链接
编辑 atom.xml
,全局修改图片链接:
"/img/loading.gif" data-src="/assets
-> "/img/loading.gif" data-src="http://xxx.github.io/assets
我这里沿用了github pages链接
使用 WordPress标签 替换 hexo标签
由于我在hexo中没有分类
,所以只说标签
的导入,方法都差不多
- 全局修改标签的
nicename
属性为 WordPress
标签中的nicename
以”网站建设”为例,wordpress
中,它的nicename
为website
替换:nicename="网站建设"
-> nicename="website"
- 使用
工具
-> 导入
-> WordPress
其他问题
标签和分类相互切换
问题:如果你使用其他方法导入后,发现标签
和分类
搞反了
可以直接使用WordPress自带工具:工具
– 导入
– 分类与标签转换器
,将导入后的标签
转换为分类
;