从wordpress转到classicpress的详细教程

classicpress号称更快的轻量级第三方WordPress版本,经过一段时间的探索,老白也在宝塔面板的环境下将网站整体转移到了classicpress。在此记录一下老白从wordpress转classicpress的详细过程,以及遇到的一些问题,比如FTP和主题不适配的问题等。关于二者对比,大家可以看这个:ClassicPress比较WordPress前后端性能速度对比

1.启用classicpress转移插件

下载安装一个WordPress插件:Switch to ClassicPress

官方地址:https://www.classicpress.net/latest-migration-plugin.zip

注意
在转换前,classicpress会检测当前网站的兼容性,但是还是建议大家做好网站和数据库备份。

然后点击启用插件,再点击“switch”,即可下一步

2.开始wordpress转移

点击了“switch”后,就出现下面这个界面了。

简单翻译一下,大概就是检测你的网站能否完美过渡到classicpress(以下简称cp,wp为wordpress)

此插件支持WordPress 4.9.0至6.6.2版本(以及一些较新的开发版本)。
您正在运行WordPress 6.6.2版本。
	
看起来你正在使用主题。我们不知道和ClassicPress之间有任何不兼容之处。
切换到ClassicPress最安全的方法是(暂时)安装并激活完全兼容的主题Twenty Seventeen。

我们不知道您的任何活动插件与ClassicPress不兼容。
ClassicPress支持PHP 7.4到8.3.x版本。
您使用的是PHP版本8.2.23。

这个检测不适用于未上架商店的主题,所以大家需要先找个测试站

2.1 国内服务器注意

针对国内服务器,大家点击下滑该页面,然后点击“Advanced Version Control Tool”。

这时候就会出现下面的自定义界面:

cp版本:选择最新的2.2即可,2.2

URL:插件默认提供的是github的地址,建议大家下载到自己的服务器,临用记得删除。

比如老白博客:https://www.xcbtmw.com/wp-content/ClassicPress-nightly-2.2.0-migration.20240919.zip

2.2 start!

点击“Perform the Custom Migration now!”,进行下一步

3.设置FTP

一般在进行了上面的步骤后,会直接显示如下迁移界面,然后就提示成功

但是如果出现了设置FTP界面,也不要怕,宝塔设置好之后,填入就行

  • 账户名:任意
  • 密码:任意
  • 目录:填写网站根目录

4.可能遇到的问题

如果你没遇到问题,就不要折腾下面的代码了。

如果你有任何需要WordPress 5.0及以上版本才能运行的软件,可能需要在当前主题中添加一些"shims"(填充函数)来避免迁移后可能出现的致命错误。

以cp作者自己为例,需要添加两个shims:一个是wp_body_open()(因为他们的主题使用了它),另一个是do_blocks()(因为Toolset插件使用了它)。这两个函数都是在WordPress 4.9之后引入的,因此在ClassicPress中不可用。

对于wp_body_open()函数,作者给出了一个官方的shim函数。通过在主题或自定义插件中添加以下代码,确保即使ClassicPress中没有这个函数,主题也不会崩溃:

if ( ! function_exists( 'wp_body_open' ) ) {
  function wp_body_open() {
    do_action( 'wp_body_open' );
  }
}

至于do_blocks(),问题更复杂。因为ClassicPress中没有引入Block功能,无法通过shim提供这个函数的完整功能。但可以通过提供一个shim来避免致命错误。如果网站上没有使用任何Block,这段shim代码可以让许多插件和主题正常输出内容,即使它们在代码中调用了do_blocks()

通过添加以下代码,所有Block逻辑都被跳过,并返回传递给函数的原始内容:

if ( ! function_exists( 'do_blocks' ) ) { 
  function do_blocks( $content ) {
    return $content;
  }
}

官网原文:https://www.classicpress.net/migrate-wordpress-5-8-website-to-classicpress/