The original urls for users look like /author/login/
Is it possible to replace login by user's id?
In my dream urls should become to /users/34/
(34 is user id).
Thanks.
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It only takes a minute to sign up.
Sign up to join this communityThe original urls for users look like /author/login/
Is it possible to replace login by user's id?
In my dream urls should become to /users/34/
(34 is user id).
Thanks.
you need 3 simple functions and hooks
first change the author base:
//change author/username base to users/userID
function change_author_permalinks() {
global $wp_rewrite;
// Change the value of the author permalink base to whatever you want here
$wp_rewrite->author_base = 'users';
$wp_rewrite->flush_rules();
}
add_action('init','change_author_permalinks');
then add users to query_vars:
add_filter('query_vars', 'users_query_vars');
function users_query_vars($vars) {
// add lid to the valid list of variables
$new_vars = array('users');
$vars = $new_vars + $vars;
return $vars;
}
then add the new rewrite rule:
function user_rewrite_rules( $wp_rewrite ) {
$newrules = array();
$new_rules['users/(\d*)$'] = 'index.php?author=$matches[1]';
$wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_filter('generate_rewrite_rules','user_rewrite_rules');
Now if you don't know how to use this, just copy all of the code and paste in your theme's functions.php file.
'init'
hook with a $wp_rewrite->flush_rules()
can bring a site to it's knees, right? I just had to do emergency debugging for a client using a plugin that did that; it was taking up to 90 seconds to load a page. Commenting out that line brought page loads down to less than 1 second. flush_rules()
need to go in a plugin activation hook, or at least be surrounded by an if (get_option(...)) {...}
.
Mar 29, 2011 at 4:12
$wp_rewrite->flush_rules();
should only run once (say on activation) , and the setup should be run on every init?
Mar 29, 2011 at 12:00
getlastmod()
and an option value to run $wp_rewrite->flush_rules();
only once after the .php
file is changed; that might be a good way to go that would not require creating a plugin.
Mar 29, 2011 at 21:28
You could use an htaccess rule to rewrite /users/34 to /?author=34
.htaccess
.
Mar 29, 2011 at 21:47
I built a plugin to do this. A friend wanted to hide his author URL's as he didn't like the fact they were displaying his author's usernames. I decided to go one further and allow any user to set their own URL. It redirects their old author pages. https://wordpress.org/plugins/wp-custom-author-url/