Index: wp-includes/link-template.php
===================================================================
--- wp-includes/link-template.php	(revision 11940)
+++ wp-includes/link-template.php	(working copy)
@@ -78,6 +78,8 @@
  * @return string
  */
 function get_permalink($id = 0, $leavename = false) {
+	global $wp_taxonomies;
+
 	$rewritecode = array(
 		'%year%',
 		'%monthnum%',
@@ -150,6 +152,25 @@
 			$author,
 			$post->post_name,
 		);
+
+		foreach ( $wp_taxonomies as $taxonomy ) {
+			if ( in_array( $taxonomy->name, array( 'category', 'post_tag', 'link_tag' ) ) or ( 'post' != $taxonomy->object_type ) )
+				continue;
+			if ( strpos($permalink, "%{$taxonomy->rewrite['slug']}%") !== false ) {
+				$rewritecode[] = "%{$taxonomy->rewrite['slug']}%";
+				$terms = wp_get_object_terms( $post->ID, $taxonomy->name );
+				if ( $terms ) {
+					usort($terms, '_usort_terms_by_ID');
+					$rewritereplace[] = $terms[0]->slug;
+				}
+				if ( empty($terms) ) {
+					$default_term = get_term( get_option( "default_{$taxonomy->name}" ), $taxonomy->name );
+					$rewritereplace[] = is_wp_error( $default_term ) ? '' : $default_term->slug;
+				}
+			}
+
+		}
+
 		$permalink = get_option('home') . str_replace($rewritecode, $rewritereplace, $permalink);
 		$permalink = user_trailingslashit($permalink, 'single');
 		return apply_filters('post_link', $permalink, $post, $leavename);
