奥多码,点击查看详情 APP分发吧,点击查看详情

将WordPress作者存档链接中的用户名改为用户ID

       
广告2021-06-03到期2021-07-03广告2021-06-03到期2021-07-03
       
广告2021-06-03到期2021-07-03广告2021-06-03到期2021-07-03

不少朋友都在询问,如果将WordPress作者存档链接中的用户名改为用户ID,好吧,一起来看看 前端博客 的方法吧。

将WordPress作者存档链接中的用户名改为用户ID

什么是作者存档页链接

wordpress的里的所有注册用户都有一个专属的链接,称之为作者存档页链接,通常是这样的:

  1. //未url重写
  2. http://qianduanblog.com/?author=1
  3. //已url重写
  4. http://qianduanblog.com/author/admin

其中未url重写的参数值是用户id,而url重写后的参数值是用户名。通常,我们都使用了url重写,而作者存档页链接暴露了用户名,可能对wordpress的安全性有点点倾斜(而作者的想法是作者的的参数值统一为用户id,如:author/123,用户页面链接的参数值统一为用户id,如:user/123,关于用户页面链接比作者存档页链接要复杂,后续文章再说),所以我们需要修改参数值为用户id。

修改作者存档页链接

首先要做的是,修改存档页链接,如下示例:

  1. //修改之前
  2. http://qianduanblog.com/author/admin
  3. //修改之后
  4. http://qianduanblog.com/author/123

在wordpress里内置了关于作者存档页链接的钩子,原始的作者存档页链接是这样获取的:

  1. /**
  2. *RetrievetheURLtotheauthorpagefortheuserwiththeIDprovided.
  3. *
  4. *@since2.1.0
  5. *@uses$wp_rewriteWP_Rewrite
  6. *@returnstringTheURLtotheauthor’spage.
  7. */
  8. functionget_author_posts_url($author_id,$author_nicename=){
  9. global$wp_rewrite;
  10. $auth_ID=(int)$author_id;
  11. $link=$wp_rewrite->get_author_permastruct();
  12. if(emptyempty($link)){
  13. $file=home_url(‘/’);
  14. $link=$file.‘?author=’.$auth_ID;
  15. }else{
  16. if(==$author_nicename){
  17. $user=get_userdata($author_id);
  18. if(!emptyempty($user->user_nicename))
  19. $author_nicename=$user>user_nicename;
  20. }
  21. $link=str_replace(‘%author%’,$author_nicename,$link);
  22. $link=home_url(user_trailingslashit($link));
  23. }
  24. $link=apply_filters(‘author_link’,$link,$author_id,$author_nicename);
  25. return$link;
  26. }

参考源文档,生成了这样的用户id的作者存档页链接:

  1. /**
  2. *修改url重写后的作者存档页的链接变量
  3. *@sinceyundanran-3beta2
  4. *2013年10月8日23:23:49
  5. */
  6. add_filter(‘author_link’,‘yundanran_author_link’,10,2);
  7. functionyundanran_author_link($link,$author_id){
  8. global$wp_rewrite;
  9. $author_id=(int)$author_id;
  10. $link=$wp_rewrite->get_author_permastruct();
  11. if(emptyempty($link)){
  12. $file=home_url(‘/’);
  13. $link=$file.‘?author=’.$author_id;
  14. }else{
  15. $link=str_replace(‘%author%’,$author_id,$link);
  16. $link=home_url(user_trailingslashit($link));
  17. }
  18. return$link;
  19. }

修改之后,在前台输出作者存档页的链接:

  1. get_author_posts_url(1);
  2. //=>http://qianduanblog.com/author/1

说明钩子使用的是正确的,但当我们打开这个链接的时候,出现了404。这是因为,原始的作者存档页链接的url重写规则是根据用户名来的,而现在修改为了用户id,重写规则不匹配,出现了404。

修改作者存档页查询变量

为了避免出现404,我们需要修改作者存档页的url重写规则。

  1. /**
  2. *替换作者的存档页的用户名,防止被其他用途
  3. *作者存档页链接有2个查询变量,
  4. *一个是author(作者用户id),用于未url重写
  5. *另一个是author_name(作者用户名),用于url重写
  6. *此处做的是,在url重写之后,把author_name替换为author
  7. *@version1.0
  8. *@sinceyundanran-3beta2
  9. *2013年10月8日23:19:13
  10. *@linkhttps://www.xhsay.com/use-nickname-for-author-slug.html
  11. */
  12. add_filter(‘request’,‘yundanran_author_link_request’);
  13. functionyundanran_author_link_request($query_vars){
  14. if(array_key_exists(‘author_name’,$query_vars)){
  15. global$wpdb;
  16. $author_id=$query_vars[‘author_name’];
  17. if($author_id){
  18. $query_vars[‘author’]=$author_id;
  19. unset($query_vars[‘author_name’]);
  20. }
  21. }
  22. return$query_vars;
  23. }

很巧合的是,作者存档页的查询变量有2个,之前说过,1个是url未重写的用户id(author),另一个是url已重写的用户名(author_name),而现在直接传递过来了用户id,只需要把参数名称author_name修改为author即可。

再次打开刚才的链接(http://qianduanblog.com/author/1),出现了正确页面。而如果打开原始的链接(http://qianduanblog.com/author/admin)就会出现404页面了,说明我们的修改正确了。

本文由【好易之】整理自网络!
原创文章,作者:【好易之】如转载请注明出处:https://www.zhengjiaxi.com/zxwd/jswd/69838.html
如有侵权,请邮件联系 aoduoye@qq.com 删除。
本站发布的文章及附件仅限用于学习和研究目的;不得将上述内容用于商业或非法用途,否则后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。
如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
好易之的头像好易之站长
上一篇 2020-05-27 00:37
下一篇 2020-05-27 00:37

相关推荐

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询:点击这里给我发消息

 

工作时间:周一至周五,9:30-18:30,节假日休息

关注公众号
请查看头部文章来源地址!本站所有内容均为互联网收集整理和网友上传。仅限于学习研究,切勿用于商业用途。否则由此引发的法律纠纷及连带责任本站概不承担。
阿里云