唯品秀前端博客

最新把网站所有应用版本都升级了,包括WordPress、php、nginx等,一顿的折腾踩了点坑,再次记录遇到的两个问题,其中包括数据库导入报错,以及部分用户升级后使用的主题最新评论模块调用不出来数据。

导入数据库报错

首先说说,其实我自己网站升级后评论模块并没有问题,可能人品爆发吧,但个别用户会出现此问题,对比了下配置方便,应该问题不大,然后考虑是数据库问题,因为wordpress升级到连同数据库方便也做了调整,所以让别人把自己数据库导出一份给我到本地调试,于是在导入过程中出现了报错:WordPress导入数据库报错 Unknown collation: utf8mb4_unicode_520_ci

该报错原因是数据库版本差异,导致wordpress数据库的编码整理方式不一样。MySQL 5.6 以及以上版本下,安装 WordPress 4.6 及以上版本的时候,默认的编码整理方式为 utf8mb4_unicode_520_ci,但是 MySQL 5.5 及以下版本的数据库,不支持 utf8mb4_unicode_520_ci,所以无法导入。

处理的办法:就是使用Visual Studio Code、Sublime Text等代码编辑器,打开 .sql 数据库,然后批量查找替换所有的 utf8mb4_unicode_520_ci 为 utf8mb4_unicode_ci ,保存后上传即可。

最新评论无法调用

原本代码

1
2
3
4
5
6
7
8
9
10
11
12
13
global $wpdb;  
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,25) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = '' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10";  
$comments = $wpdb->get_results($sql);  
$output = $pre_HTML;  
foreach ($comments as $comment) {  
$output .= "\n
"

 . $comment->comment_author . " 评论:
  . get_permalink($comment->ID) . "
#comment-" . $comment->comment_ID . "" title="". $comment->comment_author. ":" . $comment->post_title . "">" . strip_tags($comment->com_excerpt) ."";  
}  
$output .= $post_HTML;  
echo $output;  
?>

修改后代码

1
2
3
4
5
6
7
8
9
10
11
12
<?php
    $comments = get_comments('status=approve&number=6&order=modified');
    $output = $pre_HTML;
    foreach ($comments as $comment) {
        $com_excerpt = $comment->comment_content;
        $excerpt_len = mb_strlen($comment->comment_content, 'utf-8');
        if ($excerpt_len > 46) $com_excerpt = mb_substr($com_excerpt, 0, 46, 'utf-8').'...';
        $output .= "\n<li>". '<img src="https://q.qlogo.cn/headimg_dl?bs=qq&dst_uin='.get_comment_author_email().'&src_uin=qq.feixue.me&fid=blog&spec=40"' . ' onerror="this.src=\'/wp-content/themes/Art_Blog/images/head_portrait.jpg\'">' .strip_tags($comment->comment_author) . "<span>(" . timeago($comment->comment_date_gmt) . ")</span>" . "<p>". $com_excerpt ."</p>" . "<a href="" . get_comment_link( $comment->comment_ID ) ."#comment-" . $comment->comment_ID . "" title="查看 " .$comment->post_title . "">评:".$comment->post_title ."</a></li>";}
   $output .= $post_HTML;
    $output = convert_smilies($output);
    echo $output;
?>

如果你侧边栏最新评论调用使用的是下面这段代码,那么解决方案将适用于你,新代码中我调用了QQ头像,你也可以自己改回获取wordpress自身头像,代码:get_avatar(get_comment_author_email(), 40)

小结

一般用户还是关注于网站内容最好,少折腾,其实这些升级都不是必须的,一旦遇到问题,因为版本比较新,百度上也很难找到问题解决方案,只能自己多摸索,我也是有一两年多没升级所以才一次性全部升级到最新版本,接下来又可以偷懒一两年

本站所有文章、图片、资源等如无特殊说明或标注,均为来自互联网或者站长原创,版权归原作者所有;仅作为个人学习、研究以及欣赏!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,邮箱:343049466@qq.com
赞(1) 打赏
标签:

上一篇:

下一篇:

相关推荐

0 条评论关于"【已解决】WordPress升级后5.5.1后无法调用最新评论"

表情

最新评论

    暂无留言哦~~
谢谢你请我吃鸡腿*^_^*

支付宝扫一扫打赏

微信扫一扫打赏