使用Role_Has_Cap挂接时出现问题

时间:2012-02-21 作者:Tomas Buteler

我正在尝试过滤一个功能检查,以解决管理区域中缺少自定义用户编辑页面的过滤器的问题。但我似乎无法将过滤器添加到挂钩中,我确信我缺少一些基本的东西。

问题在于role_has_cap, 位于第343行wp-includes/capabilities.php. 内容如下:

$capabilities = apply_filters( \'role_has_cap\', $this->capabilities, $cap, $this->name );
我正在尝试通过将此添加到functions.php:

add_filter(\'role_has_cap\', \'my_role_has_cap_filter\', 10, 3);
function my_role_has_cap_filter($var_one, $var_two, $var_three) {
    print_r($var_one);
    print_r($var_two);
    print_r($var_three);
}
但绝对什么都没发生。即使我添加的过滤器的参数少于函数所需的参数(据我所知,这会触发PHP错误),WordPress也会完全忽略我。

我真正想要实现的是将false返回到current_user_can( \'edit_posts\' )current_user_can( \'edit_pages\' ) 查看时user-edit.php 在管理区,without actually removing those capabilities, 但在我看来,过滤器不适用的事实与我的最终目标更为相关。

1 个回复
最合适的回答,由SO网友:Tomas Buteler 整理而成

我终于明白了:

首先,我用错了钩子。我应该用的user_has_cap 钩子,这实际上是在使用current_user_can().

但第二,也是最重要的一点,我以super\\u admin身份登录时看到了该页面,这并没有触发apply_filter 根本不起作用。根据定义,super\\u管理员all 功能,WP不需要过滤任何检查。

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴