Here is a solution I just came up with which doesn’t use jQuery:
There is a filter parent_file
in wp-admin/menu-header.php
which runs right before outputting the menu. The inline comment says:
For plugins to move submenu tabs around.
It is just a filter on the global variable $parent_file
and I am not sure what it does but we will use this filter to alter the global variable $submenu_file
instead, which set the highlighted submenu. So this will be the solution in your case:
add_filter('parent_file', 'wpse44270_parent_file');
function wpse44270_parent_file($parent_file){
global $submenu_file;
if (isset($_GET['jobstatus']) && $_GET['jobstatus'] == 67) $submenu_file="edit.php?post_type=jobs&jobstatus=67";
return $parent_file;
}
You may adapt this with any url formatting. For example I use the format admin.php?page=my_plugin_slug&action=myaction
for my plugins’ sub menus so I used this to highlight my sub menus:
add_filter('parent_file', 'wpse44270_1_parent_file');
function wpse44270_1_parent_file($parent_file){
global $submenu_file;
if (isset($_GET['page']) && isset($_GET['action'])) $submenu_file = $_GET['page'] . '&action=' . $_GET['action'];
return $parent_file;
}
PS: I also tried the action admin_menu
to set $submenu_file
, and it did work in my case (custom plugin page/slug) but not for edit.php
sub menus (your case). So I searched for another action/filter that runs later and it was the filter parent_file
.