Auto-regenerate the post_name when a post is created/updated
/**
* Auto-regenerate the post_name when a post is created/updated
*
* @param array $data : post data.
* @return array The new array of post data after checking for collisions.
*/
function update_regenerate_slug($data)
{
if (!in_array($data['post_status'], array('draft', 'pending', 'auto-draft'))) {
$data['post_name'] = sanitize_title($data['post_title']);
}
return $data;
}
add_filter('wp_insert_post_data', 'update_regenerate_slug', 99, 2);