WordPress provides a template tag, wp_dropdown_categories, that inserts a drop-down list (the HTML select
element) of categories, where the value of each item is the ID from the database. This works fine if you are not using rewrite rules (AKA “pretty links”) - you can construct a URL using the value (?cat=[number]). However, if you use any sort of rewrite rules, this does not work. I recently converted my personal site, which uses the Pool theme, to utilize a JavaScript array to assist with displaying category pages.
Here's the code…
Edit: Code has been moved to this post.
This works for both “pretty” and standard links, as it uses the template tag get_category_link to specify the link.