Standard author links in WordPress look like: example.com/author/johnsmith
I'd like to remove the author/
part of the URL so the username is in the root. For example: example.com/johnsmith
I control page creation on my site so there will be no chance of a conflict in page and author name.
So far I've tried the following solution from WP Snippet but this no longer seems to work:
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;
}
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;
}
Do anyone know if there is a working solution to this?
It seems we have to refresh permalinks structure, but each time someone registered a new rule.
So try to flush it automatically with this :
In your functions.php file.
I had the same problem but with this it seems to be ok. But there's still a problem of conflict with page & post name.
Try: RedirectMatch 301 ^/author/(.+)$ http://www.yourblog.com/$1
This will go in your .htaccess
Your code appears fine. Manually flush your permalink structure to reflect these changes.
I've tested this combined solution but wasn't working before regenerating of permalinks. You can do it, as brasfolio described : simply clicking save on permalink page in dashboard.
This Question is similar to this question...
You can do something like This. This is nearly what you wanted..
Hope this will work...
Also add this near the other similar two, in order to redirect the feeds as well: