每篇帖子每个用户一条评论,但能够回复现有评论

时间:2014-09-24 作者:Michael Papadopoulos

我想限制我的用户每个帖子只能发表一次评论,但可以回复现有评论。我该怎么做?

我找到了这段代码,它可以起到一半的作用。使用此代码,如果他们已经在该帖子中发表了评论,但无法回复现有评论,则会隐藏评论表单。

<?php
global $current_user;
$args = array(\'user_id\' => $current_user->ID);
$usercomment = get_comments($args);
if(count($usercomment) >= 1){
    echo \'disabled\';
} else {
    comment_form();
}
?>

2 个回复
SO网友:Mike

所以,过了一段时间,我完全按照自己的意愿做了,我想分享一下会很好。

所以在functions.php 添加

function c_parent_comment_counter($pid,$uid){

    global $wpdb;
    $query = "SELECT COUNT(comment_post_id) AS count FROM $wpdb->comments WHERE <code>comment_approved</code> = 1 AND <code>comment_post_ID</code> = $pid AND <code>user_id</code> = $uid AND <code>comment_parent</code> = 0";
    $parents = $wpdb->get_row($query);
    return $parents->count;
}
并且在comments.php

global $current_user, $post;
$number_of_parents = c_parent_comment_counter($post->ID,$current_user->ID);
echo "parents: ".$number_of_parents;
if ( $number_of_parents >= 1 ) {
    echo \'<nav class="withcomment">\';
    comment_form( array( \'title_reply\' => __( \'Reply\' ) ) );
    echo \'</nav>\';
} else {
    echo \'<span class="withoutcomment">\' . comment_form( array( \'title_reply\' => __( \'Your opinion\' ) ) ) . \'</span>\';
}
?>
在中style.css

.withcomment {
    display: none;
}
这将计算用户添加了多少父注释,如果添加了一条或多条父注释,则会隐藏表单。如果为0,则显示表单。但是,当您单击“答复”按钮时,表单将显示,您可以答复任何评论。这不是防黑客的!!!

SO网友:lippoliv

如果不是“黑客安全”,你可以通过JS实现。每次都显示comment\\u表单,如果用户写了评论也可以。但是呈现和不可见的HTML元素(如ID为“has\\u writed\\u comment”的div)。

然后在JS上检查是否存在具有此ID的元素,并隐藏注释表单,直到按下“应答”按钮。然后显示表单。在“中止应答”时,再次隐藏表单^^

我认为你必须通过JS来完成这项工作,除非你禁用了JS代码中的应答按钮。

结束

相关推荐

通过COMMENTS_POPUP_LINK链接到SVG

我想删除注释部分中的文本,并用返回png的svg替换它。这是我目前的代码 <?php comments_popup_link(\'<object type=\"image/svg+xml\" data=\"images/comment.svg\"><img src=\"./images/comment.png\"/></object>\', \'1 <object type=\"image/svg+xml\" data=\"images/commen