我已经为一个客户建立了一个开发站点,我们正在为他们的现有站点进行彻底的改造。
我想做的一件事是导入他们现有的所有新闻帖子,并将所有附加到这些帖子上的图片带过去。我已成功导出附件WP Attachment export插件。xml文件看起来一切正常,并且包含了post\\u parent的正确值。
当我尝试使用标准Wordpress导入器导入xml文件时,图像被导入到媒体库中,并且与之相关的各种数据(除了)所有post\\u父值都重置为0,这意味着它们不再附加到任何内容。
这里发生了什么,是否有办法正确导入post\\u父级?现有站点有超过1000个媒体文件,因此我显然不想手动重新附加它们。
编辑下面是xml中一个附件的示例。我已经xxxx出了一些文件名/标题。
<item>
<title>XXXXXXXXXX</title>
<link>http://www.xxxxxxx.com/news/xxxxxxx/attachment/xxxxxxx/</link>
<pubDate>Wed, 18 Sep 2013 04:00:21 +0000</pubDate>
<dc:creator>Emma</dc:creator>
<guid isPermaLink="false">http://www.xxxxxxx.com/wp-content/uploads/2013/09/xxxxxxx.jpg</guid>
<description></description>
<content:encoded><![CDATA[]]></content:encoded>
<excerpt:encoded><![CDATA[]]></excerpt:encoded>
<wp:post_id>3880</wp:post_id>
<wp:post_date>2013-09-18 13:30:21</wp:post_date>
<wp:post_date_gmt>2013-09-18 04:00:21</wp:post_date_gmt>
<wp:comment_status>closed</wp:comment_status>
<wp:ping_status>closed</wp:ping_status>
<wp:post_name>xxxxxxx</wp:post_name>
<wp:status>inherit</wp:status>
<wp:post_parent>3874</wp:post_parent>
<wp:menu_order>0</wp:menu_order>
<wp:post_type>attachment</wp:post_type>
<wp:post_password></wp:post_password>
<wp:is_sticky>0</wp:is_sticky>
<wp:attachment_url>http://www.xxxxxxx.com/wp-content/uploads/2013/09/xxxxxxx.jpg</wp:attachment_url>
<wp:postmeta>
<wp:meta_key>_wp_attached_file</wp:meta_key>
<wp:meta_value><![CDATA[2013/09/xxxxxxx.jpg]]></wp:meta_value>
</wp:postmeta>
<wp:postmeta>
<wp:meta_key>_wp_attachment_metadata</wp:meta_key>
<wp:meta_value><![CDATA[a:5:{s:5:"width";i:500;s:6:"height";i:435;s:4:"file";s:30:"2013/09/xxxxxxx.jpg";s:5:"sizes";a:3:{s:9:"thumbnail";a:4:{s:4:"file";s:30:"xxxxxxx.jpg";s:5:"width";i:220;s:6:"height";i:150;s:9:"mime-type";s:10:"image/jpeg";}s:6:"medium";a:4:{s:4:"file";s:30:"xxxxxxx.jpg";s:5:"width";i:340;s:6:"height";i:295;s:9:"mime-type";s:10:"image/jpeg";}s:5:"large";a:4:{s:4:"file";s:30:"xxxxxxx.jpg";s:5:"width";i:402;s:6:"height";i:350;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:10:{s:8:"aperture";i:0;s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";i:0;s:9:"copyright";s:0:"";s:12:"focal_length";i:0;s:3:"iso";i:0;s:13:"shutter_speed";i:0;s:5:"title";s:0:"";}}]]></wp:meta_value>
</wp:postmeta>
</item>
干杯。
最合适的回答,由SO网友:Rarst 整理而成
我认为单独导入附件(这在本机导出中是不可能的)正是您的问题的原因。导入器插件具有以下代码:
if ( $post_parent ) {
// if we already know the parent, map it to the new local ID
if ( isset( $this->processed_posts[$post_parent] ) ) {
$post_parent = $this->processed_posts[$post_parent];
// otherwise record the parent for later
} else {
$this->post_orphans[intval($post[\'post_id\'])] = $post_parent;
$post_parent = 0;
}
}
对于孤立项还有更多的处理,但简而言之,似乎只有相同导入中的帖子才被考虑用于父级。这是有意义的,因为导出时的ID不能保证与导入时的ID完全相同。