乌徒帮技术范儿WordPressWordPress开发 › WordPress中修改用户的固定链接形式为/user/$user_id

WordPress中修改用户的固定链接形式为/user/$user_id

分类:WordPress开发 标签:,,

不少博主开通了WordPress的多用户合作写博的功能,WordPress默认的作者地址是/author/$user_nickname,但是默认情况下,nickname是无法更改的,它和用户的登录名保持一致,这存在很大的安全隐患,而且你也希望用一种更符合我们国内的使用习惯的形式,/user/$user_id的形式。那么如何实现呢?

在《WordPress修改固定链接形式为/post/%post_id%.html形式后,日期、作者页面前面带post》一文中我详细讲解了如何让一个你自己定义的网址形式在WordPress中生效。方法如此简单,以至于我只用了十几行代码就完成了看上去匪夷所思的功能。

接下来我们来看下如何在WordPress中把作者的固定链接改为/user/$user_id的形式。

第一步,修改固定地址的根目录

把author修改为user 非常简单,网上随便一搜就有一大堆文章来解释。代码如下:

add_action('init', 'new_author_base');
function new_author_base() {
? global $wp_rewrite;
? $wp_rewrite->author_base = 'user';
}

就是把$wp_rewrite->author_base改一下而已,知道了这个诀窍,你可以改成其他五花八门的作者地址根目录。

第二步,该网页中的作者链接

在网页中,我们一般是使用get_author_posts_url($author_id,?$author_nicename?=?'')来获取某一个作者的文章列表页的。我们通过一个钩子,轻松的修改获得的页面的地址:

add_filter('author_link','author_rewrite_link', 99, 3);
function author_rewrite_link($link,$user_id,$user_nickname){
? $link = str_replace($user_nickname,$user_id,$link);
? return $link;
}

通过增加author_link钩子,即可实现修改作者页面的链接地址。

第三步,增加重写规则

修改了链接地址之后,页面中的所有作者链接就已经变了,可是如果你点击进去,只能看到404,因为你还需要告诉WordPress,这个链接对应到哪一个页面,再看下面的代码:

add_filter('author_rewrite_rules','my_author_rewrite_rules',99);
function my_author_rewrite_rules($rules){
? global $wp_rewrite;
? $user_base = $wp_rewrite->author_base;
? $newrules[$user_base.'/(\d+)$'] = 'index.php?author=$matches[1]';
? return $newrules;
}

看到了吗?用一个简单的规则就实现了重写。一个点你需要注意,我在上面的代码中使用了(\d+),为什么呢?因为我们要使用$user_id来访问作者页面,所以,只有当/user/后面跟上了一个数字的时候,才进行匹配重写。

最后一步,刷新重写

我们有两种方法可以刷新重写规则,一种是去后台更新一下固定链接,另外一种是通过函数来刷新,我采用了函数的方法,把上面第一步中的代码改为:

add_action('init', 'new_author_base');
function new_author_base() {
? global $wp_rewrite;
? $wp_rewrite->author_base = 'user';
? $wp_rewrite->flush_rules();
}

其实就是增加了$wp_rewrite->flush_rules();一行而已。

现在去看看你的博客,是不是已经把作者的固定链接改变了?

如果你觉得本文有用,可以通过下面的按钮打赏,如果有不懂的地方,通过下方评论留言吧。

填写个人信息,赶快回复吧!