一直没敢更新最新的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( " ", 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的一天(●'◡'●)
作者:秫米介绍:来一起坐下喝杯奶茶!
文章:77篇
最后更新:24-04-11
介绍:来一起坐下喝杯奶茶!
文章:77篇
4 条评论
当前页面评论被关闭,原因如下:
猫耳双马尾
技术大佬解决问题就是厉害!
变成了猫娘
[博主]
@紫慕不说话 度娘一下,我超级熟练的嘿嘿!
元气少女味
怎么两个摇摆的还不同步呢~~
变成了猫娘
[博主]
@obaby 一个是摇头晃脑,一个是摆头晃脑。