WordPress.org

Make WordPress Core

Ticket #14036: 14036.diff

File 14036.diff, 1.4 KB (added by solarissmoke, 3 years ago)

For top level pages, check slug against category and tag bases

  • wp-includes/post.php

     
    27902790                // namespace than posts so page slugs are allowed to overlap post slugs. 
    27912791                $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"; 
    27922792                $post_name_check = $wpdb->get_var( $wpdb->prepare( $check_sql, $slug, $post_ID, $post_parent ) ); 
     2793                 
     2794                // top-level pages cannot have the same slug as the tag/category bases 
     2795                $category_tag_base_check = ( 0 == $post_parent ) ? in_array( $slug, array( get_option( 'category_base' ), get_option( 'tag_base' ) ) ) : false; 
    27932796 
    2794                 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 ) ) { 
     2797                if ( $post_name_check || $category_tag_base_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 ) ) { 
    27952798                        $suffix = 2; 
    27962799                        do { 
    27972800                                $alt_post_name = substr( $slug, 0, 200 - ( strlen( $suffix ) + 1 ) ) . "-$suffix";