只有作者才能看到评论

时间:2019-12-10 作者:Andy

我目前正试图发表评论,只有作者登录后才能看到这些帖子。两个不同的网站登录者无法看到对方的帖子。

我在网上找到了一些东西,比如一个函数来尝试这个。然而,每次我使用它都会破坏网站。我已经做了一些关于应用过滤器和使用WP挂钩的研究。很遗憾,我没能做到这一点。

仅通过改变select where 条款过滤数据库中的用户id,然后通过php?

//After the comments are fetched, you can modify the comments array
add_filter(\'the_comments\', \'wpse56652_filt_comm\');

function wpse56652_filt_comm($param) {
global $current_user;
get_currentuserinfo();

//current users id = $current_user->ID;

//Current users posts, check get_posts params to change as per your need
$user_posts = get_posts(array(\'author\' => $current_user->ID, \'posts_per_page\' => -1));

echo \'<pre>\';
print_r($param);
echo \'</pre>\';

return $param;
}

1 个回复
SO网友:cjbj

您提到的过滤器修改get_comments 函数在提取后执行。但是,您也可以解析此函数的参数。您可以查看哪些参数here. 正如您所看到的,您可以将结果限制为某个作者的评论,或将其排除在外。

现在,这里是你的问题变得有点粗略的地方。不清楚您是只想显示当前作者的评论,还是希望显示除非当前作者之外的所有评论(意思是:当前作者的评论和非作者的人的评论)。

第一个非常简单。获取当前作者并相应限制结果。

$current_user_id = get_the_author_meta(\'ID\');
if (!empty($current_user_id))
  $current_comments = get_comments (array(\'post_id\' => get_the_ID(), \'post_author__in\' => array($current_user_id)));
第二个稍微复杂一些。你必须fetch an array of all authors, 除了来自的当前用户和“获取所有评论”(get all comments),不包括所有其他注册作者。

$current_user_id = get_the_author_meta(\'ID\');
if (!empty($current_user_id)) {
  $non_current_user_ids = get_users (array (\'exclude\' => array($current_user_id)));
  $current_comments = get_comments (array(\'post_id\' => get_the_ID(), \'post_author__not_in\' => array($current_user_id)));
  }
Note: 我没有测试代码。这里给出它作为概念证明。

您的问题不包括用户未登录时发生的情况。他能看到所有评论吗,还是只看到非注册用户的评论?