每篇帖子每个用户电子邮件一条评论

时间:2013-04-01 作者:Christopher

我有这个代码来限制每个用户的评论。

<!-- #only one comment -->
<?php global $current_user,$post;
$args = array(\'user_id\' => $current_user->ID,\'post_id\' => $post->ID);
$usercomment = get_comments($args);
if(count($usercomment) >= 1){
    echo \'Thank you for your comment\';
} else {
    comment_form();
} ?>
我的问题是:如何编辑此代码以检查作者电子邮件而不是用户id

非常感谢。

2 个回复
最合适的回答,由SO网友:nonsensecreativity 整理而成

尝试此操作,下面的代码将生成$current_user->user_email 对于author\\u电子邮件,如果$usercomment 返回一些内容,然后会有当前用户的评论,因此会回应“谢谢”,但如果没有返回任何内容,则会输出表单。

global $current_user,$post;

$usercomment = get_comments(array(\'author_email\' => $current_user->user_email, \'post_id\' => $post->ID));

if($usercomment) {
    echo "Thank You";
}
else {
    comment_form();
}

SO网友:s_ha_dum

您不必进行第二次查询来获取评论。您应该能够检查现有$comments 对象,并相应地进行切换。

global $current_user;
get_currentuserinfo();
$showform = true;
// var_dump($comments);
// var_dump($current_user);
if (!empty($comments) && isset($current_user)) {
  foreach ($comments as $c) {
    if ($c->comment_author_email === $current_user->data->user_email) {
      $showform = false;
      break;
    }
  }
}
if(!$showform){
    echo \'Thank you for your comment\';
} else {
    comment_form();
}
当然,这只适用于已登录的用户,但我不知道您还可以如何组织它。如果用户未登录,则软件不知道user_email 将是。

结束