ZBlog PHP(1.5版本)迁移到WordPress(5.3版本)新版教程

原创  郑建华   2019-12-08   643人阅读  0 条评论

image.png

    折腾WordPress主题的时候就在想,能不能把当前Zblog中的内容全部导入到WordPress站中去。然而在网上搜索的教程中,能够导入过去的都是Zblog老版本的插件,是ZPI格式的插件,对应的是ASP版本。而且我使用的是PHP版本。但是教程中提到了一款插件叫做 Movable Type。于是我在ZBlog的应用中心查询Movable,发现了两款插件。一款对应导入,一款对应导出。

image.png

    下载了导出的插件,启用插件,查看配置界面如下

image.png

    选择分类后,提交。然后访问同步输出的地址。展示界面如下:

image.png

刚开始我打开的界面不是这样的,图中的图片部分显示的都是错误,图片显示不出来。我右键审查元素后发现,图片中链接部分是<#ZC_BLOG_HOST#>加图片相对路径。有可能这个插件就是专门这样设计的。导入插件和导出插件对应都是针对ZBlog之间的数据导入导出。但是我这里需要的不是这种,于是我决定直接将其改为域名路径。

根据如下目录,打开api.php文件。将其中的路径直接替换成域名路径,再次打开,显示的图片就都正常了。

image.png

image.png

再来看看WordPress站处,应该如何导入呢。需要先在插件管理处搜索并安装如下插件

image.png

再选择工具中的导入,运行导入器

image.png

接下来的步骤如下,需要导入mt-export.txt文件。那没得文件咋办呢,这文件要怎么生成呢,请继续看下面的教程。

image.png


这里有两种方式,方法差不多,但是效果有差别。

方法一,不会保留图片的原始访问路径,需要将图片导入到WordPress站中。如果图片比较多,上传会需要点时间。如果图片是保存到站内的,可以使用这种方式来迁移数据。

方法二,会保留图片的原始访问路径,无需将图片上传到WordPress站中。如果原站访问路径还会保留,或者图片使用的是图床路径,没有保存在站内的,可以使用这种方式来迁移数据。



具体操作

方法一:

打开上面的同步输出路径 http://域名/路径/api.php  右键另存为,将api.php.html改为mt-export.txt  下载显示如下。

image.png

文本不是很大,但是确要点时间,因为除了下载文本,还下载了文件。查看下载完成的文件,包含一个txt和一个文件夹。这是因为右键另存为的方式会将其中的资源保存下来。其实如果不是另存为txt,而是保存html格式的话,直接打开html文件,图片是能直接显示出来的。

image.png

打开文本文件和文件夹,文件中的图片对应的文件夹中的图片

image.png

image.png


    接下来可以在文件中全文搜索 ./mt-export_files将其替换成 /mt-export_files 也就是去掉前面的点符号  也可以根据自己的喜好将点符号替换成相对路径。这里是什么意思呢。这个点符号是在当前文件访问时候用的,而要将其导入到wordPress中后,文章访问时,就是网站的根目录加设置的相对路径来访问了。如果只是设置替换掉点符号,就要将图片文件夹拷贝到网站根目录下。如果是设置其他路径比如zb_users\upload\2019\12 就是站点存放图片的路径,也要将图片文件夹拷贝到响应的路径下。

    本次是直接将其放到网站根目录下面的,于是直接拷贝上去。由于是自己尝试、摸索的,刚开始还没总结出规律。所以上面的替换路径的操作,在导入前没有做,那也不要着急,可以直接在数据库中批量修改。执行sql即可

update wp_posts set post_content=REPLACE(post_content,'./mt-export_files/','/mt-export_files/');

    导入很简单,选择文件导入就可以了,一定要记得将图片文件夹拷贝到站点中。

image.png

image.png

    如果是后期增量导入,也不需要担心。重复的数据会被过滤掉的。

image.png

方法二:

    方法二是我在摸索定时自动同步的过程中发现的,虽然到最后都没解决自动同步导入的问题,但是发现了另外一种手动导入的方式。其实差不多,只是不用管图片了。图片全是原路径。如果文章中使用的全是图床的连接的,正好可以使用这种方式进行导入。

    我一开始是查找资料,如何通过JS实现网页另存为格式。但是没有一个能满足我的需要。后面无意间发现了H5有一个download属性,这个属性在同源的情况下,会触发下载文件的操作,并且可以指定文件名。于是编写了一个简单的网页,实现我需要的功能。可以将下面的内容拷贝下来,复制到文本文件中,重命名为downLoad.html

<!DOCTYPE html>
<html>
<head>
<title>下载mt-report.txt</title>

<style type="text/css">

</style>
</head>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
$(function(){
$("#downLoad")[0].click();
})
</script>
<body>
	<a href="https://aliyunoss.zjh336.cn/plugin/MT_Export/api.php" id="downLoad" download="mt-report.txt">下载</a>
</body>
</html>

然后将其拷贝到网站下面,比如直接放到根目录下面。然后在浏览器中访问该路径,注意一定是同一个域名,文中设置的www.zjh336.cn,就得用www.zjh336.cn去访问,就不能用zjh336.cn来访问,否则也会被认为是跨域,不会触发下载,而是直接访问api.php的路径了。通过这种方式下载的文件,图片路径就保留了原始路径了。

image.png

接下来剩下的操作同方法一。

本文地址:https://www.zjh336.cn/?id=62
版权声明:本文为原创文章,版权归 郑建华 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?