我已经在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 );
推荐阅读
- Redux Framework数组选项值
- 达到一个值并将其放在php的下一行中
- 按post类型查询-未显示任何内容
- 在自定义分类模板中的WP_Query期间查询(2)ACF发布对象
- 问(如何在WordPress主题中包含js文件)
- 从TED嵌入代码中提取视频缩略图
- 将page- $ slug.php模板放在子目录中不起作用
- 以编程方式将标签添加到WordPress帖子中,而不会覆盖现有标签
- WordPress中带有wp_nav_menu()函数的移动导航菜单出现问题