修改水脉的WordPress同步新浪微博插件以适应PHP8.1 - 技术宅银魂 - 科技改变生活 - 万事屋 | 生活·动漫·娱乐综合社区-银魂同好聚集地

修改水脉的WordPress同步新浪微博插件以适应PHP8.1

万事屋是支持内容摘要同步到新浪微博的,用的是水脉的插件。

不过作者现在发展CPS和小程序去了,微博同步插件几年没更新,PHP7.x还好,更新的php8.x就总有报错。虽然可以顶着bug运行,但随着万事屋流量上升,这错误一分钟高达几十上百次,吃不消了。改!

主要是修改插件中的“wp-functions.php ”文件:

<?php
/**
 * 自定义函数
 */
if (!function_exists('mb_substr')) {
    function mb_substr($str, $start = 0, $length = 0, $encode = 'utf-8') {
        $encode_len = ($encode == 'utf-8') ? 3 : 2;
        for($byteStart = $i = 0; $i < $start; ++$i) {
            $byteStart += ord($str[$byteStart]) < 128 ? 1 : $encode_len;
            if ($str[$byteStart] == '') return '';
        } 
        for($i = 0, $byteLen = $byteStart; $i < $length; ++$i)
        $byteLen += ord($str[$byteLen]) < 128 ? 1 : $encode_len;
        return substr($str, $byteStart, $byteLen - $byteStart);
    } 
} 
if (!function_exists('mb_strlen')) {
    function mb_strlen($str, $encode = 'utf-8') {
        return ($encode == 'utf-8') ? strlen(utf8_decode($str)) : strlen($str);
    } 
} 
if (!function_exists('mb_strimwidth')) {
    function mb_strimwidth($str, $start, $width, $trimmarker, $encode = 'utf-8') {
        return mb_substr($str, $start, $width, $encode) . $trimmarker;
    } 
} 

// ... (省略未修改的部分)

// 修改后的 media_cn 函数
function media_cn($id = '') {
    $name = array(
        'weixin' => '微信',
        'qzone' => 'QQ',
        'sina' => '新浪微博',
        // 其他键值对保持不变
        'taobao' => '淘宝网',
        'alipay' => '支付宝',
        'renren' => '人人网',
        'kaixin001' => '开心网',
        'facebook' => 'Facebook',
        'twitter' => 'Twitter',
        'google' => 'Google',
        'yahoo' => 'Yahoo',
        'linkedin' => 'LinkedIn',
        'github' => 'GitHub',
        'baidu' => '百度',
        '360' => '360',
        'msn' => 'Microsoft',
    );
    
    if ($id) {
        // 检查数组键是否存在
        return isset($name[$id]) ? $name[$id] : '未知';
    } else {
        return $name;
    }
}

// ... (剩余的函数保持不变)

?>

我在这里只展示了修改的 media_cn 函数部分。其他部分的代码保持不变。你需要将这个修改后的 media_cn 函数替换到你的 wp-functions.php 文件中相应的位置。

对了,保存后又跳出个问题,大概在修改后的1112行左右:

} elseif ($wptm_connect['weixin'] && $wptm_connect['wx_login'] && is_weixin_client()) { // 微信强制登录

需要修改这段代码来检查 $wptm_connect 数组中是否存在 ‘weixin’ 和 ‘wx_login’ 键。修改后的代码如下:

} elseif (isset($wptm_connect['weixin']) && $wptm_connect['weixin'] && isset($wptm_connect['wx_login']) && $wptm_connect['wx_login'] && is_weixin_client()) { // 微信强制登录
修改说明
  • 使用 isset():我们使用 isset() 函数来检查 $wptm_connect 数组中是否存在 ‘weixin’ 和 ‘wx_login’ 键。这样可以避免访问不存在的数组键时产生的警告。
  • 逻辑检查:在确认键存在后,我们再进行值的逻辑检查,确保只有当键存在且值为真时,才执行后续的条件。

好了,保存后插件正常运行,目前十分钟了,没见网站日志里有相关插件保存,舒服了。

请登录后发表评论

    没有回复内容

万事屋新帖