The avoid_blog_page_permalink_collision() WordPress PHP function is used to prevent conflicts between a site slug and a permalink slug. In a subdirectory installation, it ensures that a site and a new post do not use the same subdirectory. This function does this by checking if there’s a site that has the same name as a new post.
Usage
Here’s an example of how you could use the avoid_blog_page_permalink_collision() function:
$data = array(
    'post_name' => 'sample-post',  // The slug of your post
    // other post data...
);
$postarr = array();  // This is currently not used
$result = avoid_blog_page_permalink_collision($data, $postarr);
In this case, the function checks if there’s a site with the slug ‘sample-post’. If there is, it will modify the post slug to avoid a collision.
Parameters
- $data (array) (Required) – An array of post data. This should include at least the post slug (‘post_name’).
 - $postarr (array) (Required) – An array of posts. This parameter is currently not used.
 
More information
See WordPress Developer Resources: avoid_blog_page_permalink_collision()
Examples
Basic usage
This is how you can use avoid_blog_page_permalink_collision() in its simplest form.
$data = array('post_name' => 'about');
$postarr = array();
$result = avoid_blog_page_permalink_collision($data, $postarr);
// The $result now contains the post data with a possibly modified slug.
Creating a new post
Here’s how you could use this function when creating a new post.
$data = array(
    'post_name' => 'new-post',
    'post_content' => 'This is a new post.',
    'post_status' => 'publish',
    // more post data...
);
$postarr = array();
$new_post_data = avoid_blog_page_permalink_collision($data, $postarr);
// Use $new_post_data to create a new post.
Updating an existing post
You could also use this function when updating an existing post.
$post_id = 123; // ID of the post you want to update $data = get_post($post_id, ARRAY_A); $data['post_name'] = 'updated-post'; $postarr = array(); $updated_post_data = avoid_blog_page_permalink_collision($data, $postarr); // Use $updated_post_data to update the post.
Using with custom post types
This function can also be used with custom post types.
$data = array(
    'post_name' => 'custom-post',
    'post_content' => 'This is a custom post.',
    'post_status' => 'publish',
    'post_type' => 'my_custom_post_type',
    // more post data...
);
$postarr = array();
$new_post_data = avoid_blog_page_permalink_collision($data, $postarr);
// Use $new_post_data to create a new custom post.