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