首页 > 解决方案 > 未捕获的错误:调用成员函数 get_slider_language()

问题描述

我正在尝试将我的 wordpress 网站迁移到 Google Cloud,我已经使用 revslider 成功迁移了两个 - 第三个数据库臃肿,我需要修剪一些脂肪才能将其放入。

尝试从任何前端页面查看幻灯片时,我现在收到以下错误。

Fatal error: Uncaught Error: Call to a member function get_slider_language() on null in /var/www/rr/wp-content/plugins/revslider/includes/output.class.php:675 Stack trace: #0 /var/www/rr/wp-content/plugins/revslider/includes/output.class.php(634): RevSliderOutput->add_slider_base() #1 /var/www/rr/wp-content/plugins/revslider/revslider.php(96): RevSliderOutput->add_slider_to_stage('new_home', '', '', '', '') #2 /var/www/rr/wp-includes/shortcodes.php(343): rev_slider_shortcode(Array, '', 'rev_slider') #3 [internal function]: do_shortcode_tag(Array) #4 /var/www/rr/wp-includes/shortcodes.php(218): preg_replace_callback('/\\[(\\[?)(rev_sl...', 'do_shortcode_ta...', '[rev_slider sli...') #5 /var/www/rr/wp-content/plugins/js_composer/include/helpers/helpers.php(240): do_shortcode('[rev_slider sli...') #6 /var/www/rr/wp-content/plugins/js_composer/include/templates/shortcodes/vc_column.php(94): wpb_js_remove_wpautop('[rev_slider sli...') #7 /var/www/rr/wp-content/plugins/js_composer/include/classes/shortcodes/core/class-wpbakerys in /var/www/rr/wp-content/plugins/revslider/includes/output.class.php on line 675

There has been a critical error on your website.

Learn more about debugging in WordPress.

我尝试了以下步骤无济于事。

  1. 切换主题。
  2. 禁用所有插件。
  3. 删除所有幻灯片并尝试使用新制作的幻灯片。
  4. 更新了所有插件,包括完全删除 Slider Revolution 并重新安装最新版本。
  5. 我从虚拟机中删除了一些语言包,试图收回一些空间,并认为可能就是这样 - 但重新安装apt-get -y install "check-language-support -l en"似乎没有帮助。
  6. 更新到 PHP 7.4.8

我正在使用具有 OpenLiteSpeed 和 MySQL+Redis 的 Google Cloud VM。我将在 Slider Revolution Global Config 中看到的唯一相关选项从default用作语言更改为en. 幻灯片在管理面板中的预览模式下按预期工作。

标签: wordpressubunturedis

解决方案


这是由 Revolution Slider 插件中的一个错误引起的,至少从 v6.2.21 开始(并且从那以后它似乎没有得到修复)。在revslider/includes/output.class.php:678它调用

$lang = $rs_wmpl->get_slider_language($this->slider);

但如果未安装 WPML 插件,$rs_wmpl则为空。

在他们修复它之前,您可以破解插件以检查 null,例如,

    //set slider language
    if($this->get_preview_mode() == false && !empty($rs_wmpl)){
        $lang = $rs_wmpl->get_slider_language($this->slider);
        $this->change_language($lang);
    }

编辑:此错误不会在普通页面加载下重现,但在 WP-CLI 下加载站点时会重现,例如通过wp profile. 怀疑它与在这种情况下处理全局变量的方式有关。


推荐阅读