好的就是这件事,我有这个网站 一旦wordpress但已被转换为 70+静态页面,管理员被删除,整个网站是静态的(这意味着每个页面都在index.html中),我想创建一个制作xml的脚本,这样我就必须在新的wordpress安装中导入它。
到目前为止,我可以创建一个XML,但只导入一个帖子。
数据源是页面的URL,我使用jquery $ get过滤仅收集给定档案的帖子。
//html
<input type="text" class="full_path">
<input type="button" value="Get Data" class="getdata">
//script
$('.getdata').click(function(){
$.get($('.full_path').val(), function(data) {
post = $(data).find('div [style*="width:530px;"]');
$('.result').html(post.html());
});
});//get Data
通过AJAX,我将清理后的数据发送到下面创建XML的php:
$file = 'newpost.xml';
$post_data = $_REQUEST['post_data'];
// Open the file to get existing content
$current = file_get_contents($file);
// Append a new post to the file
$catStr = '';
if(isset($post_data['categories']) && count($post_data['categories']) > 0){
foreach($post_data['categories'] as $category) {
$catStr .= '<category domain="category" nicename="'.$category.'"><![CDATA['.$category.']]></category>';
}
}
$tagStr = '';
if(isset($post_data['tags']) && count($post_data['tags']) > 0){
//populate post_tag like the above
}
$post_name = str_replace(' ','-',$post_data["title"]);
$post_name = str_replace(array('"','/',':','.',',','[',']','“','”'),'',strtolower($post_name));
$post_date = '2011-4-0'.rand(1, 29).''.rand(1, 12).':'.rand(1, 59).':'.rand(1, 59);
$pubTime = rand(1, 12).':'.rand(1, 59).':'.rand(1, 59).' +0000';
$post = '
<item>
<title>'.$post_data["title"].'</title>
<link>'.$post_data["link"].'</link>
<pubDate>'.$post_data["date"].' '.$pubTime.'</pubDate>
<dc:creator>admin</dc:creator>
<guid isPermaLink="false">http://localhost/saunders/?p=1</guid>
<description></description>
<content:encoded><![CDATA['.$post_data["content"].']]></content:encoded>
<excerpt:encoded><![CDATA[]]></excerpt:encoded>
<wp:post_id>1</wp:post_id>
<wp:post_date>'.$post_date.'</wp:post_date>
<wp:post_date_gmt>'.$post_date.'</wp:post_date_gmt>
<wp:comment_status>open</wp:comment_status>
<wp:ping_status>open</wp:ping_status>
<wp:post_name>'.$post_name.'</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>
'.$catStr.'
'.$tagStr.'
<wp:postmeta>
<wp:meta_key>_edit_last</wp:meta_key>
<wp:meta_value><![CDATA[1]]></wp:meta_value>
</wp:postmeta>
</item>
';
// Write the contents back to the file with the appended post
file_put_contents($file, $current.$post);
添加后,我添加以下代码以完成xml rss标记
</channel>
</rss>
如果我查看并比较从wordpress网站导出的文件的xml文件,我看到的差别不大。请帮助!!
这是生成的xml的示例:
<?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>
<title>lols why</title>
<link>http://localhost/lols</link>
<description>Just another WordPress site</description>
<pubDate>Wed, 03 Oct 2012 04:24:04 +0000</pubDate>
<language>en-US</language>
<wp:wxr_version>1.2</wp:wxr_version>
<wp:base_site_url>http://localhost/lols</wp:base_site_url>
<wp:base_blog_url>http://localhost/lols</wp:base_blog_url>
<wp:author><wp:author_id>1</wp:author_id><wp:author_login>adedoy</wp:author_login><wp:author_email>wazzup@gmail.com</wp:author_email><wp:author_display_name><![CDATA[adedoy]]></wp:author_display_name><wp:author_first_name><![CDATA[]]></wp:author_first_name><wp:author_last_name><![CDATA[]]></wp:author_last_name></wp:author>
<generator>http://wordpress.org/?v=3.4.1</generator>
<item>
<title>Sample lift?</title>
<link>../../breast-lift/delaware-breast-surgery-do-i-need-a-breast-lift/</link>
<pubDate>Wed, 03 Oct 2012 9:29:16 +0000</pubDate>
<dc:creator>admin</dc:creator>
<guid isPermaLink="false">http://localhost/lols/?p=1</guid>
<description></description>
<content:encoded><![CDATA[<p>sample</p>]]></content:encoded>
<excerpt:encoded><![CDATA[]]></excerpt:encoded>
<wp:post_id>1</wp:post_id>
<wp:post_date>2011-4-0132:45:4</wp:post_date>
<wp:post_date_gmt>2011-4-0132:45:4</wp:post_date_gmt>
<wp:comment_status>open</wp:comment_status>
<wp:ping_status>open</wp:ping_status>
<wp:post_name>sample-lift?</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="Sample Lift"><![CDATA[Sample Lift]]></category><category domain="category" nicename="Sample Procedures"><![CDATA[Yeah Procedures]]></category>
<category domain="post_tag" nicename="delaware"><![CDATA[delaware]]></category>
<wp:postmeta>
<wp:meta_key>_edit_last</wp:meta_key>
<wp:meta_value><![CDATA[1]]></wp:meta_value>
</wp:postmeta>
</item>
<item>
<title>lalalalalala</title>
<link>../../administrative-tips-for-surgery/delaware-cosmetic-surgery-a-better-experience/</link>
<pubDate>Wed, 03 Oct 2012 3:20:43 +0000</pubDate>
<dc:creator>admin</dc:creator>
<guid isPermaLink="false">http://localhost/lols/?p=1</guid>
<description></description>
<content:encoded><![CDATA[
lalalalalala
]]></content:encoded>
<excerpt:encoded><![CDATA[]]></excerpt:encoded>
<wp:post_id>1</wp:post_id>
<wp:post_date>2011-4-0124:39:30</wp:post_date>
<wp:post_date_gmt>2011-4-0124:39:30</wp:post_date_gmt>
<wp:comment_status>open</wp:comment_status>
<wp:ping_status>open</wp:ping_status>
<wp:post_name>lalalalalala</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="lalalalalala"><![CDATA[lalalalalala]]></category>
<category domain="post_tag" nicename="oink"><![CDATA[oink]]></category>
<wp:postmeta>
<wp:meta_key>_edit_last</wp:meta_key>
<wp:meta_value><![CDATA[1]]></wp:meta_value>
</wp:postmeta>
</item>
</channel>
</rss>
请告诉我我错过了什么......
答案 0 :(得分:2)
好的,重新发布并确保我理解你,这是尝试从静态文件返回wordpress。
为此,WP codex中列出了关于importing from an RSS feed,(X)HTML和static pages的三种主要方法。这就是说,如果你有一个格式良好的HTML,你可以从你的JQuery搜索字符串中看到的最简单的方法之一就是使用在codex中引用的HTML Import 2插件。它为您提供了许多选项,可以从目录,URL中执行此操作,并从新安装的管理屏幕中指定搜索参数。
如果这对您不起作用或者您真的想将所有页面转换为XML以进行导入,因为您已经使用PHP生成XML,我强烈建议您使用PHP DOM库来打开,解析,提取和写入静态文件中的数据。这将节省您浏览整个站点以生成XML所需的时间,并且它将一次性生成所有页面的完整XML文件。
无论哪种方式,我建议使用普通的RSS文件,而不是尝试重新创建WordPress的自定义格式,因为正确完成后,它为所有内容类型提供了大量数据库引用(映射ID等)。因为它似乎不需要它,所以尝试制作一个普通的RSS文件,其中只有你需要的最小值,你可以编辑这些帖子以重新分配作者等,如果有必要,在你使用codex导入之后importing from an RSS feed的说明。这会容易得多。
答案 1 :(得分:1)
自定义WordPress导出/导入XML实际上与从其他数据库创建的内容非常相似 - 我已经能够导入帖子,页面,元数据,附件,评论等。
但是它确实相当挑剔一些元素 - 比如如果两个帖子共享相同的创建时间,只插入一个,第二个帖子被认为是重复的(因此添加随机时间到来源是必须的)。
在您的示例中,wp:post_date似乎与日期格式相距甚远,因此这可能是触发重复检测的原因,导致导入单个帖子。
答案 2 :(得分:1)
我和你的情况类似。我想生成一个xml导出文件,其中填充了post和feature图像的数据。
这就是我的所作所为:
这是我的xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!-- generator="WordPress/3.9" created="2014-04-25 14:19" -->
<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>
<title>wordpresslocal title</title>
<link>http://wordpresslocal</link>
<description>Another Wordpress Local Blog</description>
<pubDate>Fri, 25 Apr 2014 14:19:36 +0000</pubDate>
<language>de-DE</language>
<wp:wxr_version>1.2</wp:wxr_version>
<wp:base_site_url>http://wordpresslocal</wp:base_site_url>
<wp:base_blog_url>http://wordpresslocal</wp:base_blog_url>
<wp:author><wp:author_id>1</wp:author_id><wp:author_login>wordpresslocaladmin</wp:author_login><wp:author_email>wordpresslocal@einrot.com</wp:author_email><wp:author_display_name><![CDATA[wordpresslocaladmin]]></wp:author_display_name><wp:author_first_name><![CDATA[]]></wp:author_first_name><wp:author_last_name><![CDATA[]]></wp:author_last_name></wp:author>
<generator>http://wordpress.org/?v=3.9</generator>
<item>
<title>POST TITLE</title>
<link>http://wordpresslocal/post-title</link>
<pubDate>Fri, 25 Apr 2014 14:02:29 +0000</pubDate>
<dc:creator><![CDATA[wordpresslocaladmin]]></dc:creator>
<guid isPermaLink="false">http://wordpresslocal/?p=1</guid>
<description></description>
<content:encoded><![CDATA[POST CONTENT]]></content:encoded>
<excerpt:encoded><![CDATA[]]></excerpt:encoded>
<wp:post_id>1</wp:post_id>
<wp:post_date>2014-04-25 14:02:29</wp:post_date>
<wp:post_date_gmt>2014-04-25 14:02:29</wp:post_date_gmt>
<wp:comment_status>open</wp:comment_status>
<wp:ping_status>open</wp:ping_status>
<wp:post_name>post-title</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="category1"><![CDATA[CATEGORY1]]></category>
<category domain="post_tag" nicename="tag1"><![CDATA[TAG1]]></category>
<wp:postmeta>
<wp:meta_key>_thumbnail_id</wp:meta_key>
<wp:meta_value><![CDATA[6]]></wp:meta_value>
</wp:postmeta>
</item>
</channel>
</rss>
答案 3 :(得分:1)
你有
<wp:post_id>1</wp:post_id>
这两个项目。我想这是主要问题,因为这是主键。