为什么CURRENT_USER_CAN(‘EDIT_COMMENT’)始终为真?

时间:2015-08-18 作者:Caio Mars

我总是TRUE 对于current_user_can(\'edit_comment\'); 在WordPress的两个不同安装(4.2.2和4.2.4)上,无论用户是什么角色。即使用户已注销。

我在一个干净的WP安装上进行了测试,得到了相同的结果。

为什么会这样?

2 个回复
SO网友:Rarst

注意它是如何单数的?评论,不是评论?

此功能的目的不是检查用户是否可以编辑任何任意注释。它只能检查用户是否可以编辑一条特定的注释,并且正确的调用方式是current_user_can( \'edit_comment\', $comment_id ).

不幸的是,中缺少第二个参数current_user_can() 函数签名,很明显,某些功能必须以这种方式进行检查。

SO网友:Domain

我认为,要调试此场景,您应该首先尝试以下操作,以获取当前用户的所有功能,并查看是否edit_comment 是否存在于其中-

$user_id = get_current_user_id();
$userdata = get_userdata( $user_id );

$allcaps = $userdata->allcaps;

$output = print_r( $allcaps, true );   

echo \'<pre>\' . $output . \'</pre>\';
此外,检查是否moderate_comments 适合您的要求。

结束

相关推荐

当返回值为空时,Apply_Filters为什么要返回非空字符串?

因为这个把我的键盘弄坏了。进行了正确的安装,将数据库上载到新的MySQL,并一直在正确使用子主题。但有件事困扰着我,我想不出来。在我的新安装上(ver2.whowhatwhy.com) 我故意将一些小部件留空。我想,当阅读default-widgets.php wp中的文件包括在该小部件上不会显示标题元素。相反,显示标题小部件是因为,出于某种原因,传递的值apply_filters 是一个空格,而不是空白值$instance[\'title\'] 为空。$title = apply_filters( \'