We can add custom nav menu classes through the nav_menu_css_class
filter.
Example:
The following should add the CSS class wpse-object-id-{object_id}
to the <li>
tags:
// Add filter
add_filter( 'nav_menu_css_class', 'wpse_menu_item_id_class', 10, 2 );
// Your navigational menu
wp_nav_menu( $args );
// Remove filter
remove_filter( 'nav_menu_css_class', 'wpse_menu_item_id_class', 10, 2 );
where we define the filter callback as:
/**
* Custom Nav Menu Class For Page ID
*/
function wpse_menu_item_id_class( $classes, $item )
{
if( isset( $item->object_id ) )
$classes[] = sprintf( 'wpse-object-id-%d', $item->object_id );
return $classes;
}
Here the object_id
attribute should give us the corresponding page/post ID.
We can see that this attribute originates from the wp_setup_nav_menu_item()
core function:
$menu_item->object_id = ! isset( $menu_item->object_id )
? get_post_meta( $menu_item->ID, '_menu_item_object_id', true )
: $menu_item->object_id;