外贸独立站的底层设计密码WordPress 成品站模板
当前位置:首页>WordPress建站>基础教程>将WordPress作者存档链接中的用户名改为昵称

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

默认情况下,修改固定链接为非默认带?的样式以后,作者存档的链接一般为 http://域名/author/用户名,这样就直接暴露了登录WordPress的用户名,存在安全隐患。一个不错的解决方法是将WordPress作者存档链接中的用户名改为昵称。

将下面的代码添加到当前主题的 functions.php 中:

/**
 * 将WordPress作者存档链接中的用户名改为昵称
 * https://www.wpdaxue.com/use-nickname-for-author-slug.html
 */
//使用昵称替换用户名,通过用户ID进行查询
add_filter( 'request', 'wpdaxue_request' );
function wpdaxue_request( $query_vars )
{
    if ( array_key_exists( 'author_name', $query_vars ) ) {
        global $wpdb;
        $author_id = $wpdb->get_var( $wpdb->prepare( "SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key='nickname' AND meta_value = %s", $query_vars['author_name'] ) );
        if ( $author_id ) {
            $query_vars['author'] = $author_id;
            unset( $query_vars['author_name'] );    
        }
    }
    return $query_vars;
}

//使用昵称替换链接中的用户名
add_filter( 'author_link', 'wpdaxue_author_link', 10, 3 );
function wpdaxue_author_link( $link, $author_id, $author_nicename )
{
    $author_nickname = get_user_meta( $author_id, 'nickname', true );
    if ( $author_nickname ) {
        $link = str_replace( $author_nicename, $author_nickname, $link );
    }
    return $link;
}

接着我们在个人资料中修改昵称为其他名称,如下图,用户 demo 的昵称改为了 changmeng,这样一来,作者存档的链接就自动由  http://域名/author/demo   变成了  http://域名/author/changmeng

此外,记得将“公开显示为”设置为非用户名,这样就OK啦!

注意:昵称不要包含空格,同时不建议使用中文;如果是多用户博客,可能会存在昵称相同的情况,这时候只会显示ID较早的用户(解决思路是修改个人资料时,如果使用了相同昵称,进行提示。但是倡萌还不知具体如何实现,如果有朋友知道,希望告知)

use-nickname-for-author-slug-wpdaxue_com

参考资料:http://wordpress.stackexchange.com/questions/5742

相关阅读:将WordPress作者存档链接中的用户名改为用户ID

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
欢迎关注WordPress大学公众号 WPDAXUE
基础教程

WordPress 显示随机内容 Random Text

2013-8-6 11:12:09

基础教程

让 WordPress 文章/页面自动到期 Post Expirator

2013-8-9 10:38:10

9 条回复 A文章作者 M管理员
  1. 龙笑天下

    你好,倡萌,我使用这个的时候,当昵称为中文的时候,出现了404;而英文昵称的则没问题。请问是啥情况啊~ 希望解答,谢谢了~

    • 倡萌

      这个问题不知道怎么处理,也没时间测试了

    • 龙笑天下

      已经修复了,就加了个urldecode,详见:http://www.ilxtx.com/use-user-nickname-or-id-for-author-slug.html

  2. 或者用firstname(名字)替换链接,这样主题中的大部分模板页不用全部修改,因为文章中大部分都会注明作者(用echo the_author_nickname ),刚才尝试了下,可以用firstname 替换,道理一样,进入作者文章列表(author.php)的链接(我用的author_posts_link)也是只支持英文名,不支持中文名。

    • 我打错了一个,是 first_name 替换倡萌大大上面的这串代码中的nickname 也可以实现滴!而且就不用去修改seo模板调用的用户nickname代码。简单一些哦。

  3. 可以改良成用用户ID的话,就不用担心昵称重复了ID总是不重复的也无法知道登陆名,求站长改良

  4. 请教一个问题啊,在用户面板中只有用户名为不可更改,如果我想使多个字段为不可更改,如何实现呢?比如说我想让名字和姓氏也不能更改?

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索