wordpress的里的所有注册用户都有一个专属的链接,称之为作者存档页链接,通常是这样的:http://www.iowen.cn/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; }
修改之后作者存档页链接就是:http://www.iowen.cn/author/123,管理员用户名就隐藏了。你的管理员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 语句只是一个最基本的修改。