修复 WordPress 5.1 评论回复按键失效问题

WordPress 5.1『回复』链接生成 comment_reply_link 函数更新,生成的回复链接没有了 onclick,导致一部分主题『回复』按钮失效——回复评论时发现要点两次『回复』才能把 @xx 填进评论框,第一次点『回复』会刷新页面,第二次点才不会刷新。并且 comment-form 位置不会移动到要回复的评论下面。

有几种方法可修复此问题:

修改『回复』按钮代码

详见:

WordPress 5.1,累……

前几天后台升级到 WordPress 5.1,目测没有什么异样。不过回复评论时发现要点两次『回复』才能把 @xx 填进评论框,第一次点『回复』会刷新页面,第二次点才不会刷新。并且 comment-fo...

使用 js 为 reply 按键添加一个 click 事件监听

来源:樱花庄的白猫,为 reply 按键添加一个 click 事件监听,用 jQuery 实现,代码如下:

$('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 跳转,这句千万别漏了
});

注意:comment-要与主题的评论结构一致,比如有些主题是 comment-评论 ID,有些主题就是 div-comment-评论 ID……如果不一致评论框就嵌套不到评论内容下方。

利用 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;
}
}

来源:后宫学长

除非注明,常阳时光文章均为原创,本文地址 https://cyhour.com/1046/AMP 移动加速版本)转载时必须以链接形式注明原始出处。
Vultr 送$25,搬瓦工年付最低$49,优惠码 BWH34QMFYT2R,更多推荐VPS信息,或支持老杨
Views: 691 Tags:  , 

Comments:4

  1. 这条post怎么之前没看到。
    这条js要加载在什么文件里?我在function里加入了
    wp_enqueue_script( 'exif', $dir . 'js/onclick.js');
    貌似没用。

    2019.03.26 23:06 # 回复
    1楼

发表留言

Vultr 送$25,搬瓦工年付最低$49,优惠码 BWH34QMFYT2R,更多推荐VPS信息