qtranslate-xp 出现致命错误

Got a fatal error with qtranslate-xp

我升级到wordpress 4.8.1后重装了一个网站,激活qtranslate-xp插件时出现致命错误:

Cannot redeclare qs_base64_serialize() (previously declared in /home/xxx/www/xxx/wp-content/plugins/qtranslate/qtranslate_services.php:80) in /home/xxx/www/xxx/wp-content/plugins/qtranslate-xp/ppqtranslate_services.php on line 91

这是几行:

// serializing/deserializing functions
function qs_base64_serialize($var) {
    if(is_array($var)) {
        foreach($var as $key => $value) {
            $var[$key] = qs_base64_serialize($value);
        }
    }
    $var = serialize($var);
    $var = strtr(base64_encode($var), '-_,', '+/=');
    return $var;
}

我试图评论这些行,但后来我遇到了另一个致命错误。

qtranslate 主插件 (Version 2.5.39 | By Qian Qin) 似乎已正确激活但无法正常工作。 Qtranslate Plus: Version 2.7.2 | By Papa Salvatore Mirko (Originally created by Qian Qin).

实际上,这 2 个插件页面已无法访问,我找不到任何解决方案。

试试下面的代码

if (!function_exists('qs_base64_serialize')) {
function qs_base64_serialize(){
 if(is_array($var)) {
    foreach($var as $key => $value) {
        $var[$key] = qs_base64_serialize($value);
    }
 }
 $var = serialize($var);
 $var = strtr(base64_encode($var), '-_,', '+/=');
 return $var;
 }
}

根据qtranslate-xpGitHub页面:

IMPORTANT: This is not an Extension of the official qTranslate.

qTranslate Plus is an unOfficial modified version of qTranslate.

由于 qTranslate-xp 是一个完整的插件而不是 qTranslate 的附加组件,您应该删除或至少停用原始 qTranslate 插件。

现在,您的网站上同时激活了插件的原始版本和分叉版本,所以这可能是您遇到问题的原因。