WordPress.org

Make WordPress Core

Ticket #10786: 10786.patch

File 10786.patch, 1.4 KB (added by johnbillion, 5 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);