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.

有帮助吗?

解决方案

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.

其他提示

You could use an htaccess rule to rewrite /users/34 to /?author=34

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/

许可以下: CC-BY-SA归因
scroll top