Перенаправить пользовательскую роль администратора - Wordpress
Я определил пользовательскую роль в 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 );