Custom Menus and taxonomies

Can I confirm that you’ve actually created separate sub-pages for these duplicate products under each state?

Assuming that’s true, you could use what I call a “soft-system” approach and use a naming convention. If you included Ohio in the page name (again, assuming post-name is part of your permalink structure, which is better for SEO anyway…), you could conditionally test for page name. this becomes a little more functional if your naming convention dictates that your product page will begin with the parent state.

xyz.com/ohio-product-1

then you have many ways to strip the significant portion of the uri prior to the first dash.

forgive my lack of code. I can always provide a basic example.

This is not the most Object Oriented approach, but if you’re new to WP and you’re not terrific with PHP my solution might be good for you.

Otherwise, try this:

http://wordpress.org/support/topic/how-to-get-top-level-parent-pages

Or, you could always use this WP function:

get_post_ancestors();

“Returns Array of IDs or empty if no ancestors are found. The direct parent is returned as the first value in the array. The highest level ancestor is returned as the last value in the array.”

You would of course still end up with a conditional statement, such as:

$ancestry = get_post_ancestors( $post );
if( isset($ancestry) && !empty($ancestry)){
    $last = count($ancestry) - 1;
    $menu_per_state = get_the_title( $ancestry[ $last ] ); //uses ID 

    // relies on matching name for menu and page title using this method. 
    // uses default theme_location since none specified
    // refer to docs on wp_nav_menu, very helpful

    wp_nav_menu( array('menu' => $menu_per_state) );  
}