Way to organize content – custom taxonomies or other way?

It can be daunting to wrap your head around these things sometimes. I sure had a hard time with it 🙂

You were right making the Restaurant a custom post type which you can then assign terms from your the custom taxonomies.

First of all, it would be best if you change the names of your taxonomies to something more readable. You might be mixing up terms someplace, and then something like restaurant-type or restaurant-location is much clearer.

Then, to assign a city to a post I would use a taxonomy as well. If you use a hierarchical taxonomy (like categories) you could even put a restaurant into a state, county, city and even a part of the city. In an URL this would look really cool, like: /restaurants/california/alameda/fremont/sundale/

Of course a restaurant can’t be in two places at once, but clean content is also about the content manager. Depends on if you want to have users categorize their own restaurants. If so, you could do a check when publishing or updating the post so that it can only have one ticked restaurant-location term. This check should ideally be hooked into the save_post action, like so:

function check_for_multiple_tax_terms( $taxonomy ) {

    $tax_to_check = get_terms( $taxonomy );

    if ( count($tax_to_check) > 0 ) {

        // Do stuff when there's more than one term.
        // For example, throw an error.

    }
}
add_action('save_post', 'check_for_multiple_tax_terms');

I hope this helps you out!