WordPress.org

Make WordPress Core

Ticket #10786: 10786.patch

File 10786.patch, 1.4 KB (added by johnbillion, 9 years ago)
  • wp-includes/link-template.php

     
    7878 * @return string
    7979 */
    8080function get_permalink($id = 0, $leavename = false) {
     81        global $wp_taxonomies;
     82
    8183        $rewritecode = array(
    8284                '%year%',
    8385                '%monthnum%',
     
    150152                        $author,
    151153                        $post->post_name,
    152154                );
     155
     156                foreach ( $wp_taxonomies as $taxonomy ) {
     157                        if ( in_array( $taxonomy->name, array( 'category', 'post_tag', 'link_tag' ) ) or ( 'post' != $taxonomy->object_type ) )
     158                                continue;
     159                        if ( strpos($permalink, "%{$taxonomy->rewrite['slug']}%") !== false ) {
     160                                $rewritecode[] = "%{$taxonomy->rewrite['slug']}%";
     161                                $terms = wp_get_object_terms( $post->ID, $taxonomy->name );
     162                                if ( $terms ) {
     163                                        usort($terms, '_usort_terms_by_ID');
     164                                        $rewritereplace[] = $terms[0]->slug;
     165                                }
     166                                if ( empty($terms) ) {
     167                                        $default_term = get_term( get_option( "default_{$taxonomy->name}" ), $taxonomy->name );
     168                                        $rewritereplace[] = is_wp_error( $default_term ) ? '' : $default_term->slug;
     169                                }
     170                        }
     171
     172                }
     173
    153174                $permalink = get_option('home') . str_replace($rewritecode, $rewritereplace, $permalink);
    154175                $permalink = user_trailingslashit($permalink, 'single');
    155176                return apply_filters('post_link', $permalink, $post, $leavename);