设为首页收藏本站

安而遇随-随遇而安

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 840|回复: 0

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

[复制链接]
发表于 2019-5-13 07:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
wordpress的里的所有注册用户都有一个专属的链接,称之为作者存档页链接,通常是这样的:https://www.cnbanwagong.com//author/admin。这样作者存档页链接暴露了用户名,可能对wordpress的安全性有点点隐患,所以我们需要修改参数值为用户id。
修改方法
在主题 functions.php 中加入以下代码:
  • /**
  • * 修改url重写后的作者存档页的链接变量
  • */
  • add_filter('author_link', 'author_link', 10, 2);
  • function author_link( $link, $author_id) {
  •     global $wp_rewrite;
  •     $author_id = (int) $author_id;
  •     $link = $wp_rewrite->get_author_permastruct();
  •     if ( empty($link) ) {
  •         $file = home_url( '/' );
  •         $link = $file . '?author=' . $author_id;
  •     } else {
  •         $link = str_replace('%author%', $author_id, $link);
  •         $link = home_url( user_trailingslashit( $link ) );
  •     }
  •     return $link;
  • }
  • /**
  • * 替换作者的存档页的用户名,防止被其他用途
  • * 作者存档页链接有2个查询变量,
  • * 一个是author(作者用户id),用于未url重写
  • * 另一个是author_name(作者用户名),用于url重写
  • * 此处做的是,在url重写之后,把author_name替换为author
  • */
  • add_filter('request', 'author_link_request');
  • function author_link_request( $query_vars ) {
  •     if ( array_key_exists( 'author_name', $query_vars ) ) {
  •         global $wpdb;
  •         $author_id=$query_vars['author_name'];
  •         if ( $author_id ) {
  •             $query_vars['author'] = $author_id;
  •             unset( $query_vars['author_name'] );   
  •         }
  •     }
  •     return $query_vars;
  • }

修改之后作者存档页链接就是:https://www.cnbanwagong.com/,管理员用户名就隐藏了。你的管理员ID编号可能是 1 ,你也可以修改一下这个编号。
修改管理员ID编号
最直接的方法是操作数据库,在修改之前请先备份好数据库。WordPress 储存用户数据是在 wp_users 和 wp_usermeta 两个表中(wp_ 为数据库前缀),我们需要直接修改这两个表中的数据。除此之外,我们还必须修改文章作者的 post_author,不然就会导致文章作者信息出错;因为评论也会记录已登录的作者 user_id,所以评论的用户 ID 也要一起修改。综上所述,我们大致需要执行下面几条 SQL 语句:(记得修改为自己的数据库前缀)
  • UPDATE wp_users SET ID = 2 WHERE ID = 1;
  • UPDATE wp_usermeta SET user_id = 2 WHERE user_id = 1;
  • UPDATE wp_posts SET post_author = 2 WHERE post_author = 1;
  • UPDATE wp_comments SET user_id = 2 WHERE user_id = 1;

SQL 执行后的效果为:把用户 id=1 修改成 id=2。
当然如果你还有其它插件或功能关联过用户 ID,那么修改方面同样很简单,找到对应的数据表,然后将字段对应做修改就可以了,因为子凡做二次开发的时候就是这样,以上 SQL 语句只是一个最基本的修改。
本文代码参考:https://www.iowen.cn

随遇而安
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表