我已经在Woocommerce中定义了自定义角色。该用户仅需要访问URL即可编辑shop_orders并检查单个车间订单。喜欢:
/wp-admin/edit.php?post_type=shop_order
/wp-admin/post.php?post=124&action=edit
/wp-admin/post-new.php?post_type=shop_order
如果他们去其他地方, 我想将他们重定向到:
/wp-admin/edit.php?post_type=shop_order
实际上, 他们应该只看到订单, 修改订单和创建订单。我为此添加了所有正确的权限, 并且对菜单进行了大幅度修改, 以使它们看不到”产品”, “我的个人资料”等。但是, 如果他们直接访问某些链接, 它们仍然会加载(“仪表板”和”我的设置”)。从仪表板上删除它们!=删除对它们的访问。
我试图通过重定向除带有通配符的一些白名单路由之外的所有内容来增强我的安全性。关于如何处理有什么想法?谢谢。
#1
听起来你可以使用此过滤器执行以下操作:https://codex.wordpress.org/Plugin_API/Filter_Reference/user_has_cap
我的理解是, 当wordpress查询用户是否有能力在网站上做某事时, 例如edit_posts, 然后你可以应用进一步的逻辑(在你的示例中, 检查它们的角色是否是你定义的自定义角色)来决定限制或增强该功能。在你的情况下, 如果用户不符合你的条件(他们不要求预定义页面), 则可以重定向。
快速概念证明(我认为):
function only_let_user100_see( $allcaps, $cap, $args ) {
if($args[0] === 'edit_posts' && is_admin()) {
if(get_current_user_id() !== 100) {
echo "No way";
exit;
}
} else {
return $allcaps;
}
}
add_filter( 'user_has_cap', 'only_let_user100_see', 10, 3 );
评论前必须登录!
注册