WordPress.org

Make WordPress Core

Ticket #12002: 12002.3.diff

File 12002.3.diff, 1.3 KB (added by jeremyfelt, 6 years ago)
  • src/wp-admin/includes/ms.php

     
    616616add_action( 'network_admin_notices', 'site_admin_notice' );
    617617
    618618function avoid_blog_page_permalink_collision( $data, $postarr ) {
    619         if ( is_subdomain_install() )
     619        if ( is_subdomain_install() || ! is_main_site() || empty( $data['post_name'] ) ) {
    620620                return $data;
    621         if ( $data['post_type'] != 'page' )
     621        }
     622
     623        $blog_prefix = apply_filters( 'ms_blog_prefix', '/blog' );
     624
     625        if ( ! empty( $blog_prefix ) ) {
    622626                return $data;
    623         if ( !isset( $data['post_name'] ) || $data['post_name'] == '' )
     627        }
     628
     629        // Ignore it if the post type is not public
     630        if ( ! in_array( $data['post_type'], get_post_types( array( 'public' => true ) ) ) ) {
    624631                return $data;
    625         if ( !is_main_site() )
    626                 return $data;
     632        }
    627633
    628634        $post_name = $data['post_name'];
    629635        $c = 0;
    630         while( $c < 10 && get_id_from_blogname( $post_name ) ) {
     636        while ( $c < 10 && get_id_from_blogname( $post_name ) ) {
    631637                $post_name .= mt_rand( 1, 10 );
    632638                $c ++;
    633639        }
     640
    634641        if ( $post_name != $data['post_name'] ) {
    635642                $data['post_name'] = $post_name;
    636643        }
     644
    637645        return $data;
    638646}
    639647add_filter( 'wp_insert_post_data', 'avoid_blog_page_permalink_collision', 10, 2 );