这实际上是一个基本的PHP问题:
if (in_array(\'Participant\', \'Subscriber\', $current_user->roles)) {
不是这样的
in_array
作品
in_array
检查第一位是否在第二位。也是这样
Participant
在…内
$current_user->roles
.
然而,你所写的检查Participant
在里面Subscriber
, 然后传递一个数组作为第三个参数,这意味着true
或false
价值
相反,执行2in_array
checks和check都是true,例如。
if ( in_array(\'example\', $current_user->roles) || in_array(\'example2\', $current_user->roles) ) {
我还要指出,您发布的代码应该生成PHP警告和通知。打开
WP_DEBUG
它应该把这些打印出来。
这会起作用吗
您一直在研究的原始答案存在重大问题,如
Mark Kapluns answer. 一旦加载了一个插件,就太晚了,停用它只会对下一个页面加载起作用,如果该页面加载是管理员的话,那将是一片混乱。
因此,您有两种选择:
在插件的最顶端进行检查,如果不想加载插件,请返回。插件不会被停用,但其所有代码都不会运行不要停用插件,而是使用角色、功能和过滤器来禁用或隐藏您不想要的功能。这是大多数WordPress用户所做的,并且可以避免每次插件更新时都需要进行更改。在这种情况下,您很幸运,BP活动共享插件使用挂钩加载所有内容,因此您应该能够取消挂钩