Ticket #17170: attachments-globally-unique.diff

File attachments-globally-unique.diff, 1.7 KB (added by duck_, 2 years ago)
Line 
1Index: wp-includes/post.php
2===================================================================
3--- wp-includes/post.php        (revision 17643)
4+++ wp-includes/post.php        (working copy)
5@@ -2796,7 +2796,7 @@
6        } elseif ( in_array( $post_type, $hierarchical_post_types ) ) {
7                // Page slugs must be unique within their own trees. Pages are in a separate
8                // namespace than posts so page slugs are allowed to overlap post slugs.
9-               $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";
10+               $check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type IN ( '" . implode( "', '", esc_sql( $hierarchical_post_types ) ) . "', 'attachment' ) AND ID != %d AND post_parent = %d LIMIT 1";
11                $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_ID, $post_parent ) );
12 
13                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 ) ) {
14@@ -2810,7 +2810,7 @@
15                }
16        } else {
17                // Post slugs must be unique across all posts.
18-               $check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d LIMIT 1";
19+               $check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND (post_type = %s OR post_type = 'attachment') AND ID != %d LIMIT 1";
20                $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_type, $post_ID ) );
21 
22                if ( $post_name_check || in_array( $slug, $feeds ) || apply_filters( 'wp_unique_post_slug_is_bad_flat_slug', false, $slug, $post_type ) ) {