I was looking at this problem again today, that is, the dropdown element returned by wp_dropdown_categories() setting option values to the term's ID..
Now whilst this makes the dropdown a little useless for filter dropdowns or jump menus, it is actually possible to rejiggle the JS used so it works "as is"...
Here's a basic example, which is based on the code posted above.
function the_taxonomy_dropdown( $taxonomy = '', $query_var = '' ) {
if( empty( $taxonomy ) )
return;
if( empty( $query_var ) )
$query_var = $taxonomy;
$select_id = "{$taxonomy}-dropdown";
$url_base = get_bloginfo('url') . "/$query_var/";
?>
<script type="text/javascript">
jQuery(document).ready(function($){
$("select#<?php echo $select_id; ?>").change(function(){
var term = this.options[this.selectedIndex].text;
window.location.href = "<?php echo $url_base; ?>" + term;
});
});
</script>
<?php
wp_dropdown_categories( array( 'taxonomy' => $taxonomy, 'id' => $select_id ) );
}
NOTE: This examples JS assumes you are using pretty permalinks.
If your taxonomy uses a query var that differs to the taxonomy slug you pass into the function, simply add the query var as the second parameter..
the_taxonomy_dropdown( 'post_tag', 'tag' );
Please note, this is just an example to show you how to work around the issue with wp_dropdown_categories and custom taxonomies by making changes to the JS.
Also for reference, there's a ticket here that was due for a patch.
http://core.trac.wordpress.org/ticket/13258