Yes, a custom taxonomy is the best way to achieve this.
For a cat breeder site I’ve set a taxonomy for colors (in german: Farbe):
register_taxonomy(
'farbe',
array( 'post', 'page' ),
array(
'hierarchical' => false,
'label' => 'Farbe (Fell)',
'query_var' => 'farbe',
'rewrite' => array('slug' => 'farbe')
)
);
Note the third parameter array( 'post', 'page' )
.
Now you can find all posts and page covering the color black at /farbe/black/.
That’s all, WP will do the rest for you. 🙂
Update
WordPress will search for a matching template.
To link to this taxonomy, add the following code to the meta data box (tags, categories, date etc.) of your posts:
echo get_the_term_list( $post->ID, 'farbe', ' · Farbe: ', ', ', '' );
Output:
<a href="http://example.com/farbe/black/" rel="tag">black</a>
Screenshot for taxonomy “Farbe” in the post edit screen: