WordPress.org

Make WordPress Core

Ticket #18962: wp-includes_post.diff

File wp-includes_post.diff, 1.5 KB (added by mboynes, 11 months ago)

Modifying wp_unique_post_slug to allow posts in hierarchical post types to share slugs with posts in other hierarchical post types

  • post.php

     
    30653065                        return $slug; 
    30663066                // Page slugs must be unique within their own trees. Pages are in a separate 
    30673067                // namespace than posts so page slugs are allowed to overlap post slugs. 
    3068                 $check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type IN ( '" . implode( "', '", esc_sql( $hierarchical_post_types ) ) . "' ) AND ID != %d AND post_parent = %d LIMIT 1"; 
    3069                 $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_ID, $post_parent ) ); 
     3068                $check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d AND post_parent = %d LIMIT 1"; 
     3069                $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_type, $post_ID, $post_parent ) ); 
    30703070 
    30713071                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 ) ) { 
    30723072                        $suffix = 2; 
    30733073                        do { 
    30743074                                $alt_post_name = _truncate_post_slug( $slug, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix"; 
    3075                                 $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_ID, $post_parent ) ); 
     3075                                $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $alt_post_name, $post_type, $post_ID, $post_parent ) ); 
    30763076                                $suffix++; 
    30773077                        } while ( $post_name_check ); 
    30783078                        $slug = $alt_post_name;