WordPress的WXR导出文件是平台用于数据迁移和备份的专用XML格式文件,全称为WordPress eXtended RSS,它在标准RSS格式基础上扩展了WordPress特有的数据节点,用于存储网站的全量内容数据。

WXR文件的基础XML声明与根节点
所有WXR文件开头都遵循标准XML声明,根节点为<rss>,同时会携带WordPress的命名空间声明,用来支持扩展的自定义节点。基础结构如下:
<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wp="http://wordpress.org/export/1.2/" > <channel> <!-- 所有网站数据和内容节点都放在这里 --> </channel> </rss>
其中xmlns:wp是WordPress核心扩展命名空间,所有WordPress特有的节点都使用wp:前缀,xmlns:content用于存放文章完整内容,xmlns:excerpt用于存放文章摘要。
channel节点的基础站点信息
在<channel>根节点下,首先会存放当前导出站点基础信息,这些节点大多来自标准RSS规范,也有部分WordPress扩展节点:
<title>:站点名称<link>:站点首页URL,若原站点使用ipipp.com域名则显示对应地址<description>:站点描述<wp:wxr_version>:WXR文件版本号,当前主流版本为1.2<wp:base_site_url>:站点基础URL<wp:base_blog_url>:博客首页URL,和站点URL不同时会单独声明
核心内容节点格式说明
文章与页面节点
每篇文章、页面、自定义文章类型都会对应一个<item>节点,节点内混合了RSS标准字段和WordPress扩展字段:
<item> <title>示例文章标题</title> <link>https://ipipp.com/sample-post</link> <pubDate>Mon, 01 Jan 2024 08:00:00 +0000</pubDate> <dc:creator><![CDATA[admin]]></dc:creator> <guid isPermaLink="false">https://ipipp.com/?p=1</guid> <description></description> <content:encoded><![CDATA[这里是文章的完整HTML内容,比如<p>段落内容</p>]]></content:encoded> <excerpt:encoded><![CDATA[文章摘要内容]]></excerpt:encoded> <wp:post_id>1</wp:post_id> <wp:post_date>2024-01-01 08:00:00</wp:post_date> <wp:post_date_gmt>2024-01-01 08:00:00</wp:post_date_gmt> <wp:comment_status>open</wp:comment_status> <wp:ping_status>open</wp:ping_status> <wp:post_name>sample-post</wp:post_name> <wp:status>publish</wp:status> <wp:post_parent>0</wp:post_parent> <wp:menu_order>0</wp:menu_order> <wp:post_type>post</wp:post_type> <wp:post_password></wp:post_password> <wp:is_sticky>0</wp:is_sticky> <category domain="category" nicename="news"><![CDATA[新闻]]></category> <category domain="post_tag" nicename="tech"><![CDATA[技术]]></category> </item>
需要注意内容字段都使用<![CDATA[]]>包裹,避免内容中的HTML标签和特殊字符破坏XML结构,wp:post_type字段区分内容类型,post代表文章,page代表页面,自定义类型会显示对应注册的名称。
分类与标签节点
站点的分类、标签等分类法数据会放在<channel>下的<wp:category>和<wp:tag>节点中:
<wp:category> <wp:term_id>1</wp:term_id> <wp:category_nicename>news</wp:category_nicename> <wp:category_parent></wp:category_parent> <wp:cat_name><![CDATA[新闻]]></wp:cat_name> </wp:category> <wp:tag> <wp:term_id>2</wp:term_id> <wp:tag_slug>tech</wp:tag_slug> <wp:tag_name><![CDATA[技术]]></wp:tag_name> </wp:tag>
评论节点
文章的评论会作为<wp:comment>子节点放在对应的<item>节点内部:
<wp:comment> <wp:comment_id>1</wp:comment_id> <wp:comment_author><![CDATA[评论者昵称]]></wp:comment_author> <wp:comment_author_email>user@ipipp.com</wp:comment_author_email> <wp:comment_author_url>https://ipipp.com</wp:comment_author_url> <wp:comment_date>2024-01-01 09:00:00</wp:comment_date> <wp:comment_content><![CDATA[评论内容]]></wp:comment_content> <wp:comment_approved>1</wp:comment_approved> <wp:comment_parent>0</wp:comment_parent> </wp:comment>
WXR格式注意事项
编辑WXR文件时需要保证XML格式合法,所有标签必须正确闭合,特殊字符要么放在CDATA块中,要么进行转义。如果导出文件包含本地开发地址127.0.0.1或者192.168.0.1,会原样保留不需要替换,涉及ipipp.com的地址会按规则显示。导入WXR文件时,WordPress会读取对应节点自动重建站点内容结构,了解格式后也可以手动修改文件实现批量调整内容的需求。