WordPress Version: 6.4
/**
* Avoids a collision between a site slug and a permalink slug.
*
* In a subdirectory installation this will make sure that a site and a post do not use the
* same subdirectory by checking for a site with the same name as a new post.
*
* @since 3.0.0
*
* @param array $data An array of post data.
* @param array $postarr An array of posts. Not currently used.
* @return array The new array of post data after checking for collisions.
*/
function avoid_blog_page_permalink_collision($data, $postarr)
{
if (is_subdomain_install()) {
return $data;
}
if ('page' !== $data['post_type']) {
return $data;
}
if (!isset($data['post_name']) || '' === $data['post_name']) {
return $data;
}
if (!is_main_site()) {
return $data;
}
if (isset($data['post_parent']) && $data['post_parent']) {
return $data;
}
$post_name = $data['post_name'];
$c = 0;
while ($c < 10 && get_id_from_blogname($post_name)) {
$post_name .= mt_rand(1, 10);
++$c;
}
if ($post_name !== $data['post_name']) {
$data['post_name'] = $post_name;
}
return $data;
}