求助:如何实现仅允许指定管理员进行WordPress插件更新?
问题分析与修正
你的代码逻辑完全搞反了,还漏掉了过滤函数的核心参数传递,最终导致所有管理员的插件更新权限都被禁用:
- 当前代码是当用户是webadmin时,返回空的更新数组,等于把你想保留权限的用户给禁用了
- 当用户不是webadmin时,函数没有返回任何值,WordPress会将这个过滤结果视为
null,同样会阻断插件更新数据的获取,所以所有管理员都看不到更新提示
修正后的代码
function restrict_plugin_updates($transient) { // 获取当前登录用户 $current_user = wp_get_current_user(); // 仅允许webadmin用户查看插件更新 if ($current_user->user_login !== "webadmin") { // 清空更新数组,让非webadmin用户看不到更新提示 $transient->updates = array(); } // 返回处理后的更新数据(webadmin用户返回原数据,其他人返回清空后的数据) return $transient; } add_filter('pre_site_transient_update_plugins', 'restrict_plugin_updates');
关键说明
- 过滤函数必须接收
$transient参数,这个参数就是WordPress原本要获取的插件更新原始数据 - 反转判断逻辑:仅当用户不是webadmin时,才清空更新数组
- 无论哪种情况都要返回处理后的
$transient,不能不返回值,否则会导致所有用户都无法获取更新数据
内容的提问来源于stack exchange,提问作者Kc Tan
相关产品推荐
相关产品推荐

