Struggled with this one for a while. My main menu would do it absolutely fine, but anything in my widgets or footer or anywhere that you'd use
wp_nav_menu wouldn't trigger the "current_page_item" class.
I stumbled upon this code here that you can put in your Functions.php file & it'll add a current class to all menu items that link to that page. It also leaves that class on if you go deeper into the menu, so a child or grandchild of the page will still leave that class on the 'ancestor'. Which means you can do things like show a subnav when on that page only (something that you want to do more often than not)