Ticket #21013: 21013.8.patch
| File 21013.8.patch, 2.6 KB (added by SergeyBiryukov, 11 months ago) |
|---|
-
wp-includes/post.php
2850 2850 if ( $post_name_check || in_array( $slug, $feeds ) || apply_filters( 'wp_unique_post_slug_is_bad_attachment_slug', false, $slug ) ) { 2851 2851 $suffix = 2; 2852 2852 do { 2853 $alt_post_name = substr ($slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix";2854 $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_ID ) );2853 $alt_post_name = _truncate_post_slug( $slug, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix"; 2854 $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_ID ) ); 2855 2855 $suffix++; 2856 2856 } while ( $post_name_check ); 2857 2857 $slug = $alt_post_name; … … 2865 2865 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 ) ) { 2866 2866 $suffix = 2; 2867 2867 do { 2868 $alt_post_name = substr( $slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix";2868 $alt_post_name = _truncate_post_slug( $slug, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix"; 2869 2869 $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_ID, $post_parent ) ); 2870 2870 $suffix++; 2871 2871 } while ( $post_name_check ); … … 2879 2879 if ( $post_name_check || in_array( $slug, $feeds ) || apply_filters( 'wp_unique_post_slug_is_bad_flat_slug', false, $slug, $post_type ) ) { 2880 2880 $suffix = 2; 2881 2881 do { 2882 $alt_post_name = substr( $slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix";2882 $alt_post_name = _truncate_post_slug( $slug, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix"; 2883 2883 $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_type, $post_ID ) ); 2884 2884 $suffix++; 2885 2885 } while ( $post_name_check ); … … 2891 2891 } 2892 2892 2893 2893 /** 2894 * Truncate a post slug with UTF-8 characters. 2895 * 2896 * @since 3.5.0 2897 * @access private 2898 * 2899 * @param string $slug The slug to truncate. 2900 * @param int $length Max length of the slug. 2901 * @return string The truncated slug. 2902 */ 2903 function _truncate_post_slug( $slug, $length = 200 ) { 2904 while ( strlen( $slug ) > $length ) { 2905 $slug = mb_substr( urldecode( $slug ), 0, -1 ); 2906 $slug = utf8_uri_encode( rtrim( $slug, '-' ) ); 2907 } 2908 2909 return $slug; 2910 } 2911 2912 /** 2894 2913 * Adds tags to a post. 2895 2914 * 2896 2915 * @uses wp_set_post_tags() Same first two parameters, but the last parameter is always set to true.
