1. 首页
  2. WordPress

WordPress更新最新版本后无法调用最新评论

一直没敢更新最新的WordPress版本,就是怕折腾,看着醒目的更新提示直接就没忍住,点了更新到6.4.3!!!然后,这下好了出了两个问题,一个是无法点击回复,一个是最新评论调用没有数据。根据以往的经验,可能是某个钩子被删除,或者某个函数被修改。


  • 最新评论调用无数据

原来的代码

function owo_newcomments( $limit,$outpost,$outer ){
  global $wpdb;
  if (!$outer || ($outer == 0)) {
    $outer = 1111111;
  }

  $sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved,comment_author_email, comment_type,comment_author_url, SUBSTRING(comment_content,1,100) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_post_ID!='" . $outpost . "' AND user_id!='" . $outer . "' AND comment_approved = '1' AND comment_type = '' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT $limit";
  $comments = $wpdb->get_results($sql);

  foreach ($comments as $comment ) {
  @$output .= "<li id='ikmoe-comment-avatar'><div class='ikmoe-comment-avatar'><a href=\"" . get_permalink($comment->ID) . "#comment-" . $comment->comment_ID . "\" title=\"" . $comment->post_title . "上的评论\">".ikmoe_Snow_Sakura_get_the_avatar(@$user_id = $comment->user_id, $user_email = $comment->comment_author_email).'<br>'. " <strong>" . $comment->comment_author . "</strong> " . ikmoe_Snow_Sakura_get_time_ago($comment->comment_date_gmt) . "说:<br>" . str_replace(" src=", " data-original=", convert_smilies(strip_tags($comment->com_excerpt))) . "</a></li>";
  }
  echo $output;
};

修改后代码

function owo_newcomments( $limit,$outpost,$outer ){
  $comments = get_comments('number=8&status=approve&order=DESC');
  $output = $pre_HTML;

  foreach ($comments as $comment ) {
  $com_excerpt = $comment->comment_content;
  $excerpt_len = mb_strlen($comment->comment_content, 'utf-8');
  if ($excerpt_len > 100) $com_excerpt = mb_substr($com_excerpt, 0, 100, 'utf-8').'...';
  @$output .= "<li id='owo-comment-avatar'><div class='owo-comment-avatar'><a href=\"" . get_comment_link($comment->comment_ID) . "\" title=\"" . $comment->post_title . "上的评论\">".owo_Snow_Sakura_get_the_avatar(@$user_id = $comment->user_id, $user_email = $comment->comment_author_email).'<br>'. " <strong>" . $comment->comment_author . "</strong> " . owo_Snow_Sakura_get_time_ago($comment->comment_date_gmt) . "说:<br>" . $com_excerpt . "</a></li>";
  }
  
  $output .= $post_HTML;
  $output = convert_smilies($output);
  echo $output;
};

完事了,解决了!


  • 回复按钮失效

搜索了一下,说是WordPress修改了评论核心文件导致的,更改了的wp-includes/comment-template.php文件的get_comment_reply_link()函数,5.0及以前的版本,该函数输出评论回复链接按钮是绑定有一个onclick,5.1版本之后没有了这个onclick。将以下代码加入到functions.php中就可以了

//修复评论回复功能失效
global $wp_version;
if (version_compare($wp_version, '5.1.1', '>=')) {
    add_filter('comment_reply_link', 'haremu_replace_comment_reply_link', 10, 4);
    function haremu_replace_comment_reply_link($link, $args, $comment, $post)
    {
        if (get_option('comment_registration') && !is_user_logged_in()) {
            $link = sprintf(
                '',
                esc_url(wp_login_url(get_permalink())),
                $args['login_text']
            );
        } else {
            $onclick = sprintf(
                'return addComment.moveForm( "%1$s-%2$s", "%2$s", "%3$s", "%4$s" )',
                $args['add_below'],
                $comment->comment_ID,
                $args['respond_id'],
                $post->ID
            );
            $link = sprintf(
                "%s",
                esc_url(add_query_arg('replytocom', $comment->comment_ID, get_permalink($post->ID))) . "#" . $args['respond_id'],
                $onclick,
                esc_attr(sprintf($args['reply_to_text'], $comment->comment_author)),
                $args['reply_text']
            );
        }
        return $link;
    }
}

原理是利用WordPress钩子修改“回复”按钮的URL格式,当判断WordPress的版本等于或大于5.1.1时就加载该钩子。

[送杯奶茶]
  • 版权声明:本文基于《知识共享署名-相同方式共享 3.0 中国大陆许可协议》发布,转载请遵循本协议
  • 文章链接:https://www.imiowo.com/1154.html [复制] (转载时请注明本文出处及文章链接)
上一篇:
:下一篇
又是元气MAX的一天(●'◡'●)

作者:秫米

秫米
介绍:来一起坐下喝杯奶茶!

文章:75篇

最后更新:24-04-11

4 条评论

gravatar

  1. 头像
    紫慕不说话 3
    猫耳双马尾

    技术大佬解决问题就是厉害!

    #倒数1楼
    Google Chrome 123.0.0.0unknow
    回复
    唔喵!要回复吗?给你糖糖吃~
    1. 秫米
      秫米 5
      变成了猫娘
      [博主]

      @紫慕不说话 度娘一下,我超级熟练的嘿嘿!

      Google Chrome 123.0.0.0unknow
      回复
      唔喵!要回复吗?给你糖糖吃~
  2. 头像
    obaby 1
    拍手初识

    怎么两个摇摆的还不同步呢~~

    #倒数2楼
    Google Chrome 118.0.0.0Mac OSX Lion 10_15_7
    回复
    唔喵!要回复吗?给你糖糖吃~
    1. 秫米
      秫米 5
      变成了猫娘
      [博主]

      @obaby :晕呼呼了: 一个是摇头晃脑,一个是摆头晃脑。

      Google Chrome 123.0.0.0unknow
      回复
      唔喵!要回复吗?给你糖糖吃~
当前页面评论被关闭,原因如下: