释放双眼,带上耳机,听听看~!
博客升级到 5.1.1 已经有一段时间了!但是一直都没留意到点击评论回复会有问题,今早无意间发现点击【回复】不单是评论框不出现还会刷新当前页面无法直接恢复,在主题没有修改的情况下出现这种问题估计是 WordPress 升级所致,网络上搜索一番发现果然是 WordPress 5.1 搞得鬼,因为 WP 更新了 comment-reply-link() 函数的输出。原本输出的 reply 按键,其 HTML 标签带有一个 onclick 事件,绑定了 addComment.moveForm() 事件,而在 WP 5.1 中,这个 onclick 事件被移除了。
利用 WordPress 钩子修改“回复”按钮
此方法兼容最佳,在主题 functions 文件里加入如下代码:
/** * 修改评论回复按钮链接 */ global $wp_version; if (version_compare($wp_version, '5.1.1', '>=')) { add_filter('comment_reply_link', 'theme_replace_comment_reply_link', 10, 4); function theme_replace_comment_reply_link($link, $args, $comment, $post) { if (get_option('comment_registration') && !is_user_logged_in()) { $link = sprintf( '<a rel="nofollow" class="comment-reply-login" href="%s">%s</a>', 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( "<a rel='nofollow' class='comment-reply-link' href='%s' onclick='%s' aria-label='%s'>%s</a>", 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; } }