如何启用对嵌套最深的评论的回复?

时间:2016-08-08 作者:Act

正如标题所述,是否有办法覆盖默认设置,其中max nest-1是最后一次显示“回复”选项,并在max时启用“回复”,但之后将注释切换为平面内联回复?

例如,

1>2>3>4>4>4等,其中数字是回复嵌套级别。

这不仅会激怒评论者,而且无论WP使用什么规则来禁用回复,都会侵蚀编辑和报告选项。

谢谢

1 个回复
SO网友:birgire

这里有一个建议,使用comment_reply_link 筛选以更改回复链接。

与其使用正则表达式来更改它,我认为只需再次构建链接就更容易了。

这里我使用的代码与get_comment_reply_link() 核心功能,但我替换$comment->comment_ID 具有$comment->comment_parent 当满足以下条件时:

max_depth === depth + 1
我们可以调整max_depth 从后端设置或通过thread_comments_depth_max 过滤器,您可以在其中找到我的答案中的示例here.

下面是我们的演示插件:

/* Regenerate the reply link but for the comment parent instead */
add_filter( \'comment_reply_link\', function( $link, $args, $comment, $post )
{       
    if( 
           isset( $args[\'depth\' ] ) 
        && isset( $args[\'max_depth\' ] )
        && isset( $args[\'respond_id\' ] )
        && isset( $args[\'add_below\' ] )
        && isset( $args[\'reply_text\'] )
        && isset( $args[\'reply_to_text\'] )
        && (int) $args[\'max_depth\'] === 1 + (int) $args[\'depth\' ] 
        && ( ! get_option( \'comment_registration\' ) ||  is_user_logged_in() )
    ) {         
         $onclick = sprintf( 
             \'return addComment.moveForm( "%1$s-%2$s", "%2$s", "%3$s", "%4$s" )\',
             $args[\'add_below\'], $comment->comment_parent, $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_parent, 
                     get_permalink( $post->ID ) 
                ) 
            ) . "#" . $args[\'respond_id\'],
            $onclick,
            esc_attr( 
                sprintf( $args[\'reply_to_text\'], $comment->comment_author )
            ),
            $args[\'reply_text\']
        );
    }
    return $link;
}, 10, 4 );
希望有帮助。