WordPress.org

Make WordPress Core

Ticket #18962: wp-includes_post.diff

File wp-includes_post.diff, 1.5 KB (added by mboynes, 5 years 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;