
7折
减价出售
¥799
WordPress内置6种标准角色,按权限从高到低排列:
WordPress采用”能力”作为权限控制的最小单位,核心包含300+能力,例如:
publish_posts
(发布文章)edit_others_posts
(编辑他人文章)manage_options
(管理设置)function register_custom_roles() {
add_role(
'content_manager',
'内容经理',
array(
'read' => true,
'edit_posts' => true,
'delete_posts' => true,
'publish_posts' => true,
'upload_files' => true,
'manage_categories' => true
)
);
}
add_action('init', 'register_custom_roles');
function add_custom_capabilities() {
$role = get_role('editor');
$role->add_cap('export_data'); // 添加导出数据能力
$role->add_cap('manage_forms'); // 添加表单管理能力
}
add_action('admin_init', 'add_custom_capabilities');
3. 移除危险能力
function remove_risky_capabilities() {
$role = get_role('author');
$role->remove_cap('upload_files'); // 禁止上传文件
$role->remove_cap('publish_posts'); // 改为需要审核
}
add_action('admin_init', 'remove_risky_capabilities');
add_filter('user_has_cap', function($allcaps, $caps, $args, $user) {
// 限制只能编辑自己的产品
if (isset($caps[0]) && $caps[0] == 'edit_product') {
$post = get_post($args[2]);
if ($post && $post->post_author == $user->ID) {
$allcaps['edit_product'] = true;
}
}
return $allcaps;
}, 10, 4);
2. 时间受限的权限
add_filter('user_has_cap', function($allcaps) {
// 仅在工作时间允许发布
if (date('H') < 9 || date('H') > 18) {
unset($allcaps['publish_posts']);
}
return $allcaps;
});
3. IP白名单权限
add_filter('user_has_cap', function($allcaps) {
$allowed_ips = ['192.168.1.100', '10.0.0.2'];
if (!in_array($_SERVER['REMOTE_ADDR'], $allowed_ips)) {
unset($allcaps['manage_options']);
}
return $allcaps;
});
add_action('admin_menu', function() {
add_menu_page(
'报表中心',
'报表',
'view_reports', // 需要的能力
'reports',
'render_reports_page',
'dashicons-chart-bar',
30
);
});
function render_reports_page() {
if (!current_user_can('view_reports')) {
wp_die('无权访问');
}
// 渲染报表页面
}
2. 前端内容限制
add_filter('the_content', function($content) {
if (is_singular('premium_post') &&
!current_user_can('read_premium_content')) {
return '<div class="premium-locked">升级会员查看全文</div>';
}
return $content;
});
add_action('set_user_role', function($user_id, $role, $old_roles) {
$user = get_user_by('id', $user_id);
$message = sprintf(
'用户 %s 角色从 %s 变更为 %s',
$user->user_login,
implode(',', $old_roles),
$role
);
log_to_security_system($message);
}, 10, 3);
2. 敏感操作二次验证
add_filter('user_has_cap', function($allcaps) {
if (doing_sensitive_operation() &&
!verify_2fa(get_current_user_id())) {
unset($allcaps['manage_options']);
}
return $allcaps;
});
1.能力缓存:使用对象缓存存储用户能力
function get_user_capabilities($user_id) {
$cache_key = "user_caps_{$user_id}";
$caps = wp_cache_get($cache_key);
if (false === $caps) {
$caps = get_user_meta($user_id, 'capabilities', true);
wp_cache_set($cache_key, $caps, '', 3600);
}
return $caps;
}
2.最小权限原则:只授予必要的能力
3.定期审查:使用插件如”User Role Editor”进行权限审计
// 1. 创建"部门编辑"角色
add_role('department_editor', '部门编辑', [
'read' => true,
'edit_posts' => true,
'edit_others_posts' => false,
'edit_published_posts' => true,
'delete_posts' => true,
'upload_files' => true,
'publish_posts' => false // 需要上级审核
]);
// 2. 按部门限制内容访问
add_filter('map_meta_cap', function($caps, $cap, $user_id, $args) {
if ($cap == 'edit_post' && !empty($args)) {
$post_id = $args[0];
$post_dept = get_post_meta($post_id, 'department', true);
$user_dept = get_user_meta($user_id, 'department', true);
if ($post_dept && $user_dept != $post_dept) {
$caps[] = 'do_not_allow';
}
}
return $caps;
}, 10, 4);
通过灵活运用WordPress的权限系统,可以实现从简单的内容控制到复杂的企业级权限管理方案。关键是根据实际业务需求设计合理的权限结构,并定期进行安全审查。
减价出售
减价出售
减价出售
减价出售
电话咨询
1855-626-3292
微信咨询