我是靠谱客的博主 复杂电灯胆,最近开发中收集的这篇文章主要介绍《WEB开发-WordPress杂记》解决云WordPress 评论回复按钮失效问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题描述

今天在我的网站有人留言,我想在网页中直接回复,但是点击【回复】不单是评论框,在网上搜索一番发现果然是 WP的BUG,WordPress 5.1后 更改了的 wp-includescomment-template.php 文件的 get_comment_reply_link()函数,5.0 及以前的版本,该函数输出评论回复链接按钮是绑定有一个 onclick,具体以下代码:

$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
);

而 5.1 版本之后就没有这个 onclick。

BUG修复

找到问题就来解决问题吧。

如果你使用的是 Nana主题或 WordPress 版本的 Blogs主题,那么直接打开主题文件 jsscript.js 文件,找到以下代码:

$(document).ready(function(){
// 移动端输入页码跳转

修改为:

$(document).ready(function(){
$('body').on('click', '.comment-reply-link', function(){
addComment.moveForm( "div-comment-"+$(this).attr('data-commentid'), $(this).attr('data-commentid'), "respond", $(this).attr('data-postid') );
return false;
});
// 移动端输入页码跳转

其他主题的,请自行添加以下 JS 代码到当前主题的 JS 文件即可:

$('body').on('click', '.comment-reply-link', function(){
addComment.moveForm( "comment-"+$(this).attr('data-commentid'), $(this).attr('data-commentid'), "respond", $(this).attr('data-postid') );
return false; // 阻止 a tag 跳转,这句千万别漏了
});

如果是 begin 主题,直接在 functions.php 里面找到:zmingcx_scripts 函数,在最后一个 } 之前加上:

// 加载回复 js
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}

这段代码其实就是在页面加载一段 JS:

<script type='text/javascript' src='/wp-includes/js/comment-reply.min.js?ver=5.1.1'></script>

所以,非 begin 主题,只需要在主题的 header.php 加上如下代码即可:

<?php if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { ?>
<script type='text/javascript' src='/wp-includes/js/comment-reply.min.js?ver=5.1.1'></script>
<?php } ?>

但是以上方法都没有解决,笔者使用的是乐趣公园Git主题,经过我不懈努力,终于找到修复BUG的方法。将以下代码添加至主题functions文件,保存刷新就会恢复评论回复功能。

global $wp_version;
if (version_compare($wp_version, '5.1.0', '>=')) {
    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(
                '<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' οnclick='%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;
    }
}

原理是利用WordPress钩子修改“回复”按钮的URL格式,当然啦你要判断你的WordPress版本是否大于5.1。

在这里插入图片描述

评论回复框能够正常使用了。

参考地址


欢迎访问我的网站:

BruceOu的哔哩哔哩
BruceOu的主页
BruceOu的博客
BruceOu的CSDN博客
BruceOu的简书

接收更多精彩文章及资源推送,请订阅我的微信公众号:

在这里插入图片描述

最后

以上就是复杂电灯胆为你收集整理的《WEB开发-WordPress杂记》解决云WordPress 评论回复按钮失效问题的全部内容,希望文章能够帮你解决《WEB开发-WordPress杂记》解决云WordPress 评论回复按钮失效问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部