You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress中js_composer插件兼容PHP 8及以上版本的方案

解决方案:PHP8升级后WPBakery(js_composer)兼容问题及替代方案

一、临时修复短代码显示问题

停用js_composer后页面显示原始短代码,是因为WPBakery的短代码解析器未运行。可通过以下方式临时恢复页面可读性:

  • 在主题的functions.php末尾添加代码,隐藏未解析的WPBakery短代码(仅应急使用,不解决根本问题):
add_filter('the_content', 'hide_unparsed_vc_shortcodes');
function hide_unparsed_vc_shortcodes($content) {
    return preg_replace('/\[vc_[^\]]+\]/', '', $content);
}
  • 手动转换短代码:将页面内容复制到纯文本编辑器,批量替换常见WPBakery短代码为对应HTML结构后重新发布(操作前务必备份内容)。

二、修改内置js_composer插件兼容PHP8

该插件为主题内置(后台列表不可见),需直接修改文件,步骤如下:

  1. 备份文件:先将/wp-content/plugins/js_composer整个文件夹复制到本地,避免修改出错。
  2. 针对性修复PHP8兼容性问题:
    • 替换废弃的create_function:PHP8已移除该函数,找到插件中所有使用create_function(...)的代码,替换为匿名函数。例如:
      原代码:
      $func = create_function('', $code);
      
      替换为:
      $func = function() use ($code) {
          eval($code);
      };
      
    • 修复each()函数调用:PHP8废弃了each(),替换为foreach循环。例如:
      原代码:
      while (list($key, $val) = each($array)) { ... }
      
      替换为:
      foreach ($array as $key => $val) { ... }
      
    • 处理严格类型错误:PHP8对变量类型要求更严格,根据报错提示补充未定义变量的初始化(如$var = '';),或对类型不匹配的变量做强制转换。
  3. 重新启用插件:修改后,可通过FTP上传修改后的文件夹覆盖原文件,或在数据库wp_options表的active_plugins选项中添加js_composer/js_composer.php到激活列表。

三、替代插件推荐

若修改插件难度过高,可选择以下可视化编辑器替代:

  • Elementor:拖拽式可视化编辑器,兼容性强,有工具可将WPBakery短代码转换为Elementor块(部分复杂布局需手动调整)。
  • Beaver Builder:轻量型编辑器,操作简洁,提供专门的WPBakery迁移工具。
  • Gutenberg(WordPress内置块编辑器):无需额外插件,手动复制页面内容并将短代码替换为对应块结构即可,适合布局简单的站点。
  • SiteOrigin Page Builder:开源免费编辑器,支持自定义布局,对PHP8兼容性好。

注意:更换编辑器前,务必备份整个站点(数据库+文件),避免数据丢失。

内容的提问来源于stack exchange,提问作者Badr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 12:39:24