當(dāng)前位置:首頁>WordPress建站>基礎(chǔ)教程>將WordPress作者存檔鏈接中的用戶名改為昵稱

將WordPress作者存檔鏈接中的用戶名改為昵稱

默認(rèn)情況下,修改固定鏈接為非默認(rèn)帶?的樣式以后,作者存檔的鏈接一般為 http://域名/author/用戶名,這樣就直接暴露了登錄WordPress的用戶名,存在安全隱患。一個(gè)不錯(cuò)的解決方法是將WordPress作者存檔鏈接中的用戶名改為昵稱。

將下面的代碼添加到當(dāng)前主題的 functions.php 中:

/**
 * 將WordPress作者存檔鏈接中的用戶名改為昵稱
 * http://www.ydqwiac.cn/use-nickname-for-author-slug.html
 */
//使用昵稱替換用戶名,通過用戶ID進(jìn)行查詢
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;
}

接著我們在個(gè)人資料中修改昵稱為其他名稱,如下圖,用戶 demo 的昵稱改為了 changmeng,這樣一來,作者存檔的鏈接就自動(dòng)由  http://域名/author/demo   變成了  http://域名/author/changmeng

此外,記得將“公開顯示為”設(shè)置為非用戶名,這樣就OK啦!

注意:昵稱不要包含空格,同時(shí)不建議使用中文;如果是多用戶博客,可能會(huì)存在昵稱相同的情況,這時(shí)候只會(huì)顯示ID較早的用戶(解決思路是修改個(gè)人資料時(shí),如果使用了相同昵稱,進(jìn)行提示。但是倡萌還不知具體如何實(shí)現(xiàn),如果有朋友知道,希望告知)

use-nickname-for-author-slug-wpdaxue_com

參考資料:http://wordpress.stackexchange.com/questions/5742

相關(guān)閱讀:將WordPress作者存檔鏈接中的用戶名改為用戶ID

聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個(gè)人或組織,在未征得本站同意時(shí),禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺(tái)。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學(xué)公眾號(hào) WPDAXUE
基礎(chǔ)教程

WordPress 顯示隨機(jī)內(nèi)容 Random Text

2013-8-6 11:12:09

基礎(chǔ)教程

讓 WordPress 文章/頁面自動(dòng)到期 Post Expirator

2013-8-9 10:38:10

9 條回復(fù) A文章作者 M管理員
  1. 龍笑天下

    你好,倡萌,我使用這個(gè)的時(shí)候,當(dāng)昵稱為中文的時(shí)候,出現(xiàn)了404;而英文昵稱的則沒問題。請問是啥情況啊~ 希望解答,謝謝了~

    • 網(wǎng)站編輯

      這個(gè)問題不知道怎么處理,也沒時(shí)間測試了

    • 龍笑天下

      已經(jīng)修復(fù)了,就加了個(gè)urldecode,詳見:http://www.ilxtx.com/use-user-nickname-or-id-for-author-slug.html

  2. 或者用firstname(名字)替換鏈接,這樣主題中的大部分模板頁不用全部修改,因?yàn)槲恼轮写蟛糠侄紩?huì)注明作者(用echo the_author_nickname ),剛才嘗試了下,可以用firstname 替換,道理一樣,進(jìn)入作者文章列表(author.php)的鏈接(我用的author_posts_link)也是只支持英文名,不支持中文名。

    • 我打錯(cuò)了一個(gè),是 first_name 替換倡萌大大上面的這串代碼中的nickname 也可以實(shí)現(xiàn)滴!而且就不用去修改seo模板調(diào)用的用戶nickname代碼。簡單一些哦。

  3. 可以改良成用用戶ID的話,就不用擔(dān)心昵稱重復(fù)了ID總是不重復(fù)的也無法知道登陸名,求站長改良

  4. 請教一個(gè)問題啊,在用戶面板中只有用戶名為不可更改,如果我想使多個(gè)字段為不可更改,如何實(shí)現(xiàn)呢?比如說我想讓名字和姓氏也不能更改?

?
個(gè)人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

措勤县| 麻栗坡县| 大城县| 靖远县| 张家港市| 丰镇市| 嘉义县| 共和县| 思茅市| 茶陵县| 呼伦贝尔市| 二连浩特市| 自贡市| 柘城县| 鲜城| 安陆市| 桐梓县| 沙湾县| 东莞市| 周宁县| 昂仁县| 洪洞县| 许昌市| 闵行区| 电白县| 庄浪县| 仪征市| 万安县| 望城县| 邓州市| 罗源县| 浦北县| 陆川县| 庆云县| 开封县| 碌曲县| 浪卡子县| 衡山县| 克什克腾旗| 元阳县| 开阳县|