在我的wp-config.php
文件,我有一句话:
define(\'DISALLOW_FILE_EDIT\', true);
我总是将此作为标准包含在所有网站上,并且它总是完全按照预期工作。然而,我刚刚注意到,在一个客户的网站上,它已经停止工作。
他们有一个用户角色编辑器插件,用来定义一些自定义角色。一旦设置了角色,插件就被停用(角色不需要处于活动状态才能存在),角色的所有上限都通过自定义插件控制。
然而,自上次插件更新以来,它看起来像wp_user_roles
数据库中的条目已更新,管理员级用户现在可以访问主题文件编辑器;插件,尽管DISALLOW_FILE_EDIT
仍被定义为true。
我在我的一个插件中添加了一个过滤器,它的作用与wp-includes/capabilities.php
:
function vnmAdmin_preventFileEdits($required_caps, $cap, $user_id, $args) {
$blocked_caps = array(
\'edit_files\',
\'edit_plugins\',
\'edit_themes\',
);
if (in_array($cap, $blocked_caps)) {
$required_caps[] = \'do_not_allow\';
}
return $required_caps;
}
add_filter(\'map_meta_cap\', \'vnmAdmin_preventFileEdits\', 10, 4);
。。。但这仍然不起作用。无论我做什么,我都无法删除
edit_files/themes/plugins
管理员用户的能力。我当然想这么做。
我还缺什么吗?