Earlier we shared a snippet to change the author prefix from WordPress author slug, which will change yoursite.com/author/name to yoursite.com/profile/name.
Now, it’s time to share another snippet which will remove the author prefix from slug in WordPress, which will change yoursite/author/name to yoursite/name. You can use this snippet if your WordPress is a personal blog with a single author, which makes some sense to me.
Just add following snippet to your current theme’s functions.php file:
// The first part // add_filter('author_rewrite_rules', 'no_author_base_rewrite_rules'); function no_author_base_rewrite_rules($author_rewrite) { global $wpdb; $author_rewrite = array(); $authors = $wpdb->get_results("SELECT user_nicename AS nicename from $wpdb->users"); foreach($authors as $author) { $author_rewrite["({$author->nicename})/page/?([0-9]+)/?$"] = 'index.php?author_name=$matches[1]&paged=$matches[2]'; $author_rewrite["({$author->nicename})/?$"] = 'index.php?author_name=$matches[1]'; } return $author_rewrite; } // The second part // add_filter('author_link', 'no_author_base', 1000, 2); function no_author_base($link, $author_id) { $link_base = trailingslashit(get_option('home')); $link = preg_replace("|^{$link_base}author/|", '', $link); return $link_base . $link; }