WordPress.org

Make WordPress Core

Ticket #21013: 21013.patch

File 21013.patch, 2.3 KB (added by SergeyBiryukov, 2 years ago)
  • wp-includes/post.php

     
    28492849 
    28502850                if ( $post_name_check || in_array( $slug, $feeds ) || apply_filters( 'wp_unique_post_slug_is_bad_attachment_slug', false, $slug ) ) { 
    28512851                        $suffix = 2; 
     2852                        $slug = urldecode( $slug ); 
    28522853                        do { 
    2853                                 $alt_post_name = substr ($slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix"; 
     2854                                $alt_post_name = mb_substr( $slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix"; 
    28542855                                $post_name_check = $wpdb->get_var( $wpdb->prepare($check_sql, $alt_post_name, $post_ID ) ); 
    28552856                                $suffix++; 
    28562857                        } while ( $post_name_check ); 
    2857                         $slug = $alt_post_name; 
     2858                        $slug = urlencode( $alt_post_name ); 
    28582859                } 
    28592860        } elseif ( in_array( $post_type, $hierarchical_post_types ) ) { 
    28602861                // Page slugs must be unique within their own trees. Pages are in a separate 
     
    28642865 
    28652866                if ( $post_name_check || in_array( $slug, $feeds ) || preg_match( "@^($wp_rewrite->pagination_base)?\d+$@", $slug )  || apply_filters( 'wp_unique_post_slug_is_bad_hierarchical_slug', false, $slug, $post_type, $post_parent ) ) { 
    28662867                        $suffix = 2; 
     2868                        $slug = urldecode( $slug ); 
    28672869                        do { 
    2868                                 $alt_post_name = substr( $slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix"; 
     2870                                $alt_post_name = mb_substr( $slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix"; 
    28692871                                $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_ID, $post_parent ) ); 
    28702872                                $suffix++; 
    28712873                        } while ( $post_name_check ); 
    2872                         $slug = $alt_post_name; 
     2874                        $slug = urlencode( $alt_post_name ); 
    28732875                } 
    28742876        } else { 
    28752877                // Post slugs must be unique across all posts. 
     
    28782880 
    28792881                if ( $post_name_check || in_array( $slug, $feeds ) || apply_filters( 'wp_unique_post_slug_is_bad_flat_slug', false, $slug, $post_type ) ) { 
    28802882                        $suffix = 2; 
     2883                        $slug = urldecode( $slug ); 
    28812884                        do { 
    2882                                 $alt_post_name = substr( $slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix"; 
     2885                                $alt_post_name = mb_substr( $slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix"; 
    28832886                                $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_type, $post_ID ) ); 
    28842887                                $suffix++; 
    28852888                        } while ( $post_name_check ); 
    2886                         $slug = $alt_post_name; 
     2889                        $slug = urlencode( $alt_post_name ); 
    28872890                } 
    28882891        } 
    28892892